PDA

View Full Version : meglio molta cache L2 o usare memoria ram ondie?


May81
07-10-2005, 20:05
credo che ormai la tecnologia produttiva sia ora pronta ad integrare direttamnte on die una discreta quantità di memoria principale

facendo un ragionamento molto a "spanne" si può dire che anzichè integrare 4MB di cache di secondo livello (come nei pentium D) si potrebbe
benissimo utilizzare 1 MB (512kBx2) e lo spazio su die risparmiato utilizzarlo per 3x5 MB di memoria principale da utilizzare come buffer verso la ram di sistema.
questo perchè per realizzare un bit di cache servono 5 transistor mentre solo uno per una cella di ram quindi nello spazio di 3 MB di cache stanno 15 MB di ram

già oggi si potrebbero avere circa 16 MB di ram velocissima (anche in sincrono con la freq di clock) e con latenze di accesso veramente ridotte:
si può approssimare che gli amd grazie al memory controller integrato riducano di un fattore 2 la latenza essendo circa la metà la distanza tra memoria e cpu.
Per quei 16 MB di memoria la latenza penso potrebbe ridursi di un fattore almeno 10

Si è visto che le prestazioni migliorino molto diminuendo la latenza verso la ram (nell'architettura AMD ma credo anche nel pentium M) quindi credo che l'effetto sia notevole

mentre 2 MB di L2 cache non migliorano molto le performance anzi spesso 512kB o 256kB in alcune applicazioni sono anche meglio.

oltretutto all'nterno di un chip non si hanno grossi problemi ad aumentare il parallelismo (vedi ring da 512 bit dell'ultima versione delle gpu ati)

considerando che ci sono processori con memory controller integrato la cosa non avrebbe un costo così elevato

e con il passaggio a 65nm il tutto si potrebbe raddoppiare:
4 CPU
4x512kB di cache di secondo livello
32MB di ram buffer
direi l'ideale per il maggior bisogno di banda di un multicore...

scusate se sono un po' offtopic ma volevo sapere il vostro parere sulle mie affermazioni

secondo me è solo una questione di tempo: ricordo che sul P2 la cache era esterna...

neo571
07-10-2005, 20:09
Si il tuo ragionamento fila potrebbe essere una soluzione buona!

omeneghe
09-10-2005, 13:17
Ho letto il tuo commento alla news, ma avendo notato questa discussione ti rispondo qui ;)
Ti sei chiesto perchè per la cache servono più transistor?
Cerco di darti dei motivi per i quali l'integrazione della ram on die non dia i vantaggi sperati, la cache è una memoria di tipo statico non ha bisogno di refresh periodici per mantenere i dati, la memoria è di tipo dinamico, quindi ha bisogno di refresh, e quando c'è un refresh non si può accedere ai dati...

Per sapere se un dato è in cache bisogna effettuare un controllo in parallelo dei tag per verificare se l'indirizzo di memoria di cui si ha bisogno è già in uno degli n blocchi (memoria cache associativa a n vie, mentre una memoria completamente associativa copia solamente una word del processore è non un blocco contiguo ma è anche più costosa, cmq i P4 e gli Athlon hanno cache associativa e n vie), qundi la realizzaione di ram con queste caratteristiche richiede più transistor.

Aggiungere un buffer di ram (tra cache e memoria principale) aumenterebbe il tempo di accesso a un dato in memoria (in caso di cache miss), perchè si drovrebbe prendere il dato dalla ram principale e portarlo nel buffer, dal buffer portarlo nella L2 e poi dalla L2 al proc (nela L1), senza il buffer si sarebbe saltato un passagio.

Il fatto più importante è che già con le cache attuali si hanno fattori di cache hit (dati che stanno già in cache) abbastanza elevati, tiene presente che un dato (meglio un indirizzo di memoria) prima di finire in cache deve comunque essere prima letto dalla ram e che l'aggiunta di un buffer complica il procedimento di aggiornamento dei dati in memoria principale (quando questi sono già stati elaborati ma non ancora riscritti in ram), questo è un problema ancora più sentito in un sistema con più processori (o core).

Finisco dicendo che normalmente un buffer è a lettura/scrittura sequenziale (le politiche più semplici sono LIFO e FIFO), quello a cui pensi tu è usare della DRAM per realizzare una cache, ma qusto come detto prima non è conveniente per il discorso refresh e perchè non c'è bisogno di grandi dimensioni ma di velocità molto elevate per non far aspettare il processore (già adesso il cache hit è elevato).

Spero di non aver scritto delle stupidate, ho seguito il corso di architettura degli elaboratori più di 2 anni fa...

Poi se vuoi possiamo discutere del perchè ci sono processori con cache di 3 livello...
Ciao :)