PDA

View Full Version : Ma a che serve di preciso la cache?


the_Law
31-08-2003, 09:47
Come da topic, la cache a cosa serve di preciso e in quali applicazioni si beneficia un aumento della medesima? :confused:

TechnoPhil
31-08-2003, 10:21
Originariamente inviato da the_Law
Come da topic, la cache a cosa serve di preciso e in quali applicazioni si beneficia un aumento della medesima? :confused:


La cache è una memoria "volatile" come la ram, cioè se spegni il pc spariscono i dati.

E' la memoria + veloce che esiste, nonchè la "prima" memoria a cui attinge il processore x processare i dati.

ovviamente + un processore è provvisto di cache meglio è.;)

the_Law
31-08-2003, 10:23
Ho capito, quindi tutte le applicazioni deneficiano di un aumento della cache del processore?

TechnoPhil
31-08-2003, 10:26
Originariamente inviato da the_Law
Ho capito, quindi tutte le applicazioni deneficiano di un aumento della cache del processore?


In linea di massima possiamo dire di si!:D

man mano che la tecnologia avanza infatti, la cache dei proci aumenta.

the_Law
31-08-2003, 10:27
ok, grazie per le risposte ;)

Vault
01-09-2003, 00:07
E cosa cambia tra cache di 1° e 2°livello?

Norbrek™
01-09-2003, 00:57
Già interessa anche a me.....

Bilancino
01-09-2003, 07:43
Nelle applicazioni in cui vengono usati più volte gli stessi dati conviene mantenere questi nella cache in quanto la velocità con cui si accede è elevata. Di solito la cpu osserva se quello che gli serve è in cache se non c'è passa per la memoria e se anche qui non trova quello che serve accede nella swap area del disco fisso. Esistono tecniche raffinate per scegliere quali dati porre in cache perchè se si sbaglia nel scegliere cosa deve essere messo si rischia di perdere il vantaggio che la cache può dare.

Ciao

lombardp
01-09-2003, 08:02
Originariamente inviato da Vault
E cosa cambia tra cache di 1° e 2°livello?

Facendo un parallelo con un negozio:

La cache L1 è lo scaffale nel negozio, la cache L2 è il magazzino dietro il negozio, la RAM è il magazzino del grossista, l'hard disk è il magazzino del produttore.

Passando da L1 a HD, aumenta considerevolmente il tempo di accesso, ma anche la dimensione.

stbarlet
01-09-2003, 08:30
tranne che per i duron

TechnoPhil
01-09-2003, 08:38
Originariamente inviato da lombardp
Facendo un parallelo con un negozio:

La cache L1 è lo scaffale nel negozio, la cache L2 è il magazzino dietro il negozio, la RAM è il magazzino del grossista, l'hard disk è il magazzino del produttore.

Passando da L1 a HD, aumenta considerevolmente il tempo di accesso, ma anche la dimensione.


Ottimo paragone!:D

BEbo_
01-09-2003, 10:26
C'è da ricordare anche che non si può aumentare all'infinito la cache L1. Nel senso che c'è un limite di saturazione che si aggira sugli 8 mega intorno al quale le prestazioni iniziano anche a diminuire. Questo perché con l'aumento delle dimensioni della cache aumenta anche il tempo d'accesso ad esse per motivi tecnologici. Inoltre rimarrebbero molte zone di cache libera e quindi sprecata e molti dati diverrebbero "vecchi" e potrebbero quindi stare tranquillamente in ram o in L2.
Senza calcolare che oggi giorno il costo di 8 mega di cache L1 è comunque spropositato.

Norbrek™
01-09-2003, 11:22
Ma la cache L1 è più veloce della L2?
Originariamente inviato da stbarlet
tranne che per i duron
Perchè?
Della cache L1 so solo che c'è I-cache e D-chache, la prima memorizza le istruzioni che devono essere applicate e la seconda i dati ai quali tali istruzioni devono essere applicate!

Dumah Brazorf
01-09-2003, 13:55
Che io sappia nei processori odierni L1 e L2 viaggiano alla stessa frequenza, quella del processore. Mi pare che questo sia dal Pentium III, prima la L2 era + lenta (frequenza dimezzata), sopratutto quando era ancora esterna al die (ecco il motivo della cartuccia per il PII ed i primi PIII).
Probabilmente la L1 è leggermente + veloce proprio perchè + piccola, quindi meno tempo per cercare i dati.
Ciao.

lombardp
01-09-2003, 15:19
Originariamente inviato da Dumah Brazorf
Che io sappia nei processori odierni L1 e L2 viaggiano alla stessa frequenza, quella del processore.

Quello che cambia è la latenza nell'accesso ai dati, che risulta (ovviamente) superiore per la L2.

Fly80
01-09-2003, 18:22
Mettiamo in chiaro che generalmente nella cache del processore risiedono i registri privilegiati e non utilizzati per compiere le singole operazioni di somma , sottrazione , e spostamento e salto , ecc.. del proc.

Inoltre è piccola questa memoria perchè ha un costo ELEVATISSIMO e l'accesso ai dati è piu veloce di una normale RAM. La strutturazione in piu livelli è una scelta hardware che aiuta nel suddividere le tipologie dei registri e/o variabili.

Fly

checo
01-09-2003, 19:07
prova a disabilitarla e vedrai a che serve! :D

BEbo_
01-09-2003, 19:09
Originariamente inviato da Fly80
Mettiamo in chiaro che generalmente nella cache del processore risiedono i registri privilegiati e non utilizzati per compiere le singole operazioni di somma , sottrazione , e spostamento e salto , ecc.. del proc.

Inoltre è piccola questa memoria perchè ha un costo ELEVATISSIMO e l'accesso ai dati è piu veloce di una normale RAM. La strutturazione in piu livelli è una scelta hardware che aiuta nel suddividere le tipologie dei registri e/o variabili.

Fly

Scusa cosa intendi? Non starai facendo confusione??? I registri sono una cosa e la cache è un'altra... e la suddivisione tra L1 L2 L3 non ha niente a che fare con i vari registri ax bx cx ecc ecc :wtf:

checo
01-09-2003, 19:09
Originariamente inviato da Norbrek™
Ma la cache L1 è più veloce della L2?

Perchè?
Della cache L1 so solo che c'è I-cache e D-chache, la prima memorizza le istruzioni che devono essere applicate e la seconda i dati ai quali tali istruzioni devono essere applicate!

perhè i duron hanno l1 128k e l2 64k

Abilmen
01-09-2003, 20:13
La cache L1 fa parte integrante del procio ed è normalmente molto piccola; quando si parla di cache ci si riferisce quasi sempre a quella level 2; la sua importanza è notevole in quanto serve a limitare i casi deleteri di cache miss; in pratica, quando il processore chiede i dati alla ram centrale, questi vengono copiati anche nella cache L2 insieme a quelli adiacenti (con uno speciale algoritmo di previsione) in modo tale che, nella richiesta successiva, è molto probabile che i dati siano presenti nella cache L2 che è molto più veloce della ram-base; è evidente che, più è grande la cache L2 (es. 512 k contro 256 - tipico), più dati-previsti saranno copiati in tale tipo di memoria con drastica diminuzione dei casi di cache miss (o tempi di attesa del processore prima che venga trovato il dato); è chiaro anche che in caso di programmi o giochi con codice molto "grande", la cache "maggiorata" diventa determinante al fine di evitare che il procio vada troppo spesso a "pescare" nella lenta (se confrontata alla cache) memoria di sitema...la qual cosa causerebbe un discreto rallentamento di tutto il sistema.

Dervik
01-09-2003, 22:57
scusate la mia ignoranza ma quindi è giusto che la cache sia sempre utilizzata al massimo della sua capacità?

Dumah Brazorf
01-09-2003, 23:26
Sì, la cache di un processore è sempre piena! Capirai 64x2KB di L1 + 128/256/512KB di L2 non sono molti, la cpu elabora quei dati in frazioni di secondo.
Ciao.

V|RuS[X]
01-09-2003, 23:31
Originariamente inviato da TechnoPhil
E' la memoria + veloce che esiste


http://www.uco.es/~lf2rocal/clint/clint1.jpg

Fabryzius
02-09-2003, 07:58
Non mi è molto chiaro cosa la cpu metta dentro a questa cache, una delle poche cose che mi balza subito all'occhio e l'apertura di un file PDF...la prima volta è molto lenta, mentre già alla seconda il tempo di apertura dello stesso viene quasi dimezzato. E poi visto che è molto piccola viene saturata quasi immediatamente...quindi i dati poi vengono sovrascritti ?

Dumah Brazorf
02-09-2003, 10:59
Alt, la situazione di Acrobat non centra un bell'accidente con la cache del processore.
Alla prima apertura il programma deve essere caricato dall'hd, periferica lenta (tempo di accesso calcolato i millisecondi!! la cpu fa un ciclo di clock in frazioni di nanosecondi), e viene memorizzato nella memoria di sistema (la ram).
Alla seconda apertura il programma risiede già nella ram e molte istruzioni per l'apertura sono già memorizzate senza bisogno di essere rielaborate.
Ma questa è un'operazione che svolge il sistema operativo.
Le istruzioni che sono memorizzate nella cache del processore sono di bassissimo livello (linguaggio macchina). A questo livello per compiere un'operazione a noi relativamente facile come una divisione occorrono svariate righe di codice, quindi svariate istruzioni, ed è facilissimo dover eseguire cicli for, while, salti, per cui un pezzo di codice deve essere eseguito più e più volte.
Ciao.

Fly80
02-09-2003, 16:49
Originariamente inviato da BEbo_
Scusa cosa intendi? Non starai facendo confusione??? I registri sono una cosa e la cache è un'altra... e la suddivisione tra L1 L2 L3 non ha niente a che fare con i vari registri ax bx cx ecc ecc :wtf:


Si scusate :-P , ho fatto confusione io. In realtà i registri sono una memoria ancora piu costosa e quindi piu piccola che si trova all'interno del processore :-)


La cache serve a questo : il S.O. porta un blocco di memoria principale nella cache che , suddivide questo blocco in PAROLE di Memoria che saranno poi lette e utilizzate dal processore stesso.

La suddivisione in piu livelli è semplicemente un ulteriore trasferimento di parole da piu grandi a piu piccole.
PEr questo la cache non deve essere troppo grande....


ciao a tutti

fly

Xtian
02-09-2003, 19:07
Originariamente inviato da Fly80
La cache serve a questo : il S.O. porta un blocco di memoria principale nella cache che , suddivide questo blocco in PAROLE di Memoria che saranno poi lette e utilizzate dal processore stesso.
No, e' la cpu che accede alla sua cache, il S.O. non c'entra niente.

^TiGeRShArK^
02-09-2003, 23:49
e cmq tutte le tecniche affini alla cache e la cache stessa si basano sul "principio della località" (sempre se si kiama così o è qlkosa d simile...) ke dice ke in ambito informatico una volta ke si ha accesso ad un dato sarà molto probabile ke si acceda a quello stesso dato e ai dati vicini altre volte. Inoltre vi è anke una certa decadenza temporale, in quanto a mano a mano ke il tempo passa la probabilità di accedere agli stessi dati diminuisce ... è per questo ke di solito si tende a scartare il dato più vecchio dalla cache, anke se a voler entrare nei dettagli esistono molte politiche diverse x skartare i dati nella cache ... se nn sbaglio ne ho studiate 5 o 6 ......

mazzy
03-09-2003, 13:17
Si scusate :-P , ho fatto confusione io. In realtà i registri sono una memoria ancora piu costosa e quindi piu piccola che si trova all'interno del processore :-)


Non ha senso parlare di costo di un singolo componente in una cpu

Il processore viene fabbricato tutto assieme, non montato nel senso di un armadio o cose simili.

Un registo non costa piu' di un cella della cache, e' tutto l'assieme che costa.

Una cpu che ha un difetto in una unita' logica od in un regitro, o nella cache viene scartato indipendentemente dal resto.

La cache e' il pezzo della cpu oramai che contiene piu' transistors e che occupa una porzione importate dell'intera CPU; aumentando la dimensione , aumenta quella di tutta la CPU e il costo per fabbricarlo aumenta piu' che proporzionalmente.

Il concetto di cache di 1,2,3 livello nasce dall'esigenza di fornire un rapporto prestazioni/prezzo quanto piu' alto possibile.

Un unica mega cache integrata nella cpu sarebbe desiderabile ma avrebbe un costo magari spopositato ed allora si frazione e la si sposta piu' o meno esternamente.

Il frazionamento aumenta solo le latenze e i ritardi, ma chiaramente riduce i costi.

Prendendo ad esempio il P2 e il primo P3 avevano una cache di primo livello integrata nella cpu e una esterna collegata con un bus speciale integrata nell'enorme cartuccia in cui era contenuto.

Integrarla, magari anche come nel Pentium PRO, costava troppo.

Con l'avvento del P3 Coppermine Intel e' riuscita invece a integrarla nella cpu stessa, e per non stravolgere l'archiettura della stessa e' rimasta la suddivisione tra 1 e 2.

Nel P4 la cache di 1 livello non esiste in realta' come lo era nel P3, esiste una cache delle microistruzioni e la cache cosidetta di 2 livello e' stata promossa quasi come a quella di primo livello del P3.

Dumah Brazorf
03-09-2003, 13:37
Uhe ma nel Pentium PRO la cache L2 non era sempre su un chip separato da quello del core? Io ricordo così...
Ciao.

mazzy
03-09-2003, 19:05
ma nel Pentium PRO la cache L2 non era sempre su un chip separato da quello del core

Si era in un formato gemelli siamesi, non fisicamente presente nella stessa die, ma collegato comunque alla cpu