Concetti Chiave
- La memoria principale DRAM presenta problemi di latenza rispetto alla CPU, con tempi di accesso superiori a 10 ns, nonostante l'elevata banda di trasferimento delle memorie DDR.
- Le cache, posizionate tra CPU e RAM, permettono di migliorare le prestazioni accedendo ai dati più rapidamente in caso di cache hit, riducendo i tempi di attesa.
- L'allocazione e il rimpiazzamento della cache si basano su località spaziale e temporale, ottimizzando l'accesso a dati vicini e già utilizzati, rispettivamente.
- Negli elaboratori moderni si utilizzano più livelli di cache (L1, L2, L3) per massimizzare l'efficienza, con cache separate per dati e istruzioni per gestire meglio le diverse località.
- La microarchitettura prevede cache dedicate all'interno della CPU e nel package, utilizzando bus veloci per ridurre le contese e migliorare le prestazioni complessive.
Problemi di latenza della memoria
La memoria principale è costituita da DRAM, più lenta della CPU, e questo causa un rallentamento, problema che persiste anche se la banda di trasferimento con memorie DDR è elevata, poiché la latenza iniziale è quasi sempre maggiore di 10 ns. Inoltre, nel calcolo della latenza totale si deve considerare il tempo di recupero dei dati e il controller della memoria (se integrato nel North Bridge).
Soluzioni con SDRAM e cache
Uno dei modi per risolvere questo problema è quello di usare SDRAM invece che DRAM, poiché le prime sono più veloci ma sono anche più costose.
Per questo vengono introdotte le cache, cioè una memoria veloce con dimensioni di limitate che si trova tra CPU e RAM.
Il principio di funzionamento consiste nel:
- la CPU reperisce i dati sempre dalla cache, come se potesse contenere tutte le informazioni presenti in RAM
- se la parola desiderata è presente nella cache (cache hit) c'è un vantaggio di tempo di accesso
- se la parola non è presente (cache miss) la parola deve essere trasferita da DRAM a cache e poi è letta, operazione risulta più lenta, quindi l'utilizzo della cache è vantaggioso solo quando c'è una percentuale di hit alta.
Per caricare un dato in presenza di cache:
- si richiede il dato alla cache
- se presente si carica subito
- altrimenti si legge il dato nella memoria e si carica nella cache, se cache piena si applica la politica di rimpiazzamento
Lo spostamento dei dati tra memoria e cache non avviene per parole ma per blocchi chiamate linee di cache, di dimensioni variabili tra 8 e 512 parole.
Gestione della cache e località
Per la tecnica di gestione (allocazione e rimpiazzamento di cache) si utilizzano:
- località spaziale, c'è un'alta probabilità di accedere in breve tempo a celle di memoria con indirizzo vicino. La politica di allocazione consente di leggere più dati di quelli necessari poiché potrebbero essere necessari in seguito visto che sono vicini
- località temporale, c'è un'alta probabilità di accedere nuovamente in breve tempo a una cella di memoria a cui si ha già avuto l'accesso. La politica di rimpiazzamento consente di decidere quale blocco rimpiazzare in caso di necessità, di solito si usa politica di LRU (Least Recently Used)
Struttura delle cache nei moderni elaboratori
Negli elaboratori attuali vengono usate più cache:
- ci sono diversi livelli di cache (L1, L2,...) usate a cascata per ottimizzare il trade-off costi/prestazioni (di solito ci sono due livelli di cache, la cache L1 è la più veloce ma anche la meno capiente)
- ci sono cache diverse usate per istruzioni e per dati con località diverse
Microarchitettura a 3 livelli di cache:
- ci sono una piccola cache dati (L1-D) e una indirizzi (L1-I) all’interno della CPU
- c’è la cache di livello 2 assemblata al package della CPU
- c’è la cache di livello 3 presente nella scheda madre
La presenza di cache all’interno della CPU o nel suo package consente di usare bus riservati molto veloci dove non ci sono contese.
Domande da interrogazione
- Qual è il principale problema legato alla latenza della memoria principale?
- Come possono le SDRAM contribuire a migliorare le prestazioni rispetto alla DRAM?
- Qual è il ruolo della cache nel migliorare l'accesso ai dati?
- Quali sono le due principali politiche di gestione della cache?
- Come è strutturata la cache nei moderni elaboratori?
La memoria principale, costituita da DRAM, è più lenta della CPU, causando un rallentamento significativo, con una latenza iniziale che supera spesso i 10 ns, anche con memorie DDR ad alta banda di trasferimento.
Le SDRAM sono più veloci rispetto alla DRAM, ma anche più costose, e possono quindi ridurre i problemi di latenza, rendendole una soluzione preferibile in alcuni contesti.
La cache funge da memoria veloce tra CPU e RAM, permettendo alla CPU di accedere rapidamente ai dati; se i dati sono presenti nella cache (cache hit), l'accesso è immediato, mentre un cache miss richiede un trasferimento più lento dalla DRAM.
Le politiche di gestione della cache si basano sulla località spaziale, che prevede l'accesso a celle di memoria vicine, e sulla località temporale, che prevede l'accesso ripetuto a celle già utilizzate; la politica di rimpiazzamento più comune è la LRU (Least Recently Used).
Negli elaboratori moderni, ci sono più livelli di cache (L1, L2, L3) utilizzati a cascata per ottimizzare costi e prestazioni, con cache separate per istruzioni e dati, e una microarchitettura che include cache all'interno della CPU e nel package per un accesso più veloce.