RAM scratchpad
RAM Scratchpad, nota anche solamente comeScatchpad o Local Store è un termine informatico che identifica una memoria ad alta velocità utilizzata generalmente per memorizzare dati utilizzati dal microprocessore con frequenza.
Può essere considerata simile alla cache di un processore con la differenza che mentre la cache è invisibile al programmatore la scatchpad è indirizzata direttamente dal processore e quindi visibile al programmatore.
La scatchpad viene utilizzata per semplificare la gestione della coerenza delle cache nei sistemi multiprocessore. In un sistema multiprocessore la gestione della cache diventa un problema pressante dato che bisogna garantire che le cache non contengano dati vecchi, quindi ogni volta che un processore accede a un dato che risulta presenta anche in una cache di un altro processore il blocco di dati nella cache del processore va invalidato, questo genera un elevato flusso di dati tra i processori che rallenta il sistema. La scatchpad invece è una memoria direttamente indirizzabile quindi se un processore vuole accedere a dei dati in una scatchpad di un altro processore può farlo direttamente senza dover invalidare la cache del processore proprietario della scatchpad. Questo semplifica la realizzazione hardware e riduce il numero di messaggio di sincronizzazione tra i processori. Le scatchpad si basano sul principio di località come le cache e quindi se un processore copia nella sua scatchpad i dati che usa di frequente può ridurre in maniera significativa gli accessi alla lenta memoria centrale senza dover utilizzare cache.
Le scatchpad non sono utilizzate normalmente nei processori per personal computer dato che, per avere un reale vantaggio i programmi devono essere scritti tenendo conto della loro presenza mentre nei sistemi per computer si tende a preferire la compatibilità con il passato alle prestazioni. Invece i sistemi embedded essendo spesso basati su software scritti appositamente possono utilizzare le scatchpad senza problemi.
Esempio di utilizzo
- I processori SH2 e SH4 utilizzati nelle console SEGA potevano indirizzare parte della cache come scatchpad in caso di necessità.
- Il processore R3000 SONY utilizzato dalla PlayStation aveva una scatchpad al posto della cache di primo livello. Il processore poteva porre lo stack e altri file temporanei per esempio.
- Il processore R5000 SONY utilizzato dalla PlayStation 2 aveva una scatchpad da 16 kb accessibile in DMA che poteva trasferire i dati al processore grafico GS o alla memoria.
- Le unità SPE del processore Cell possono lavorare sono nella loro memoria locale che è accessibile in DMA e quindi si comporta come una scatchpad. Questo permette di eliminare totalmente la presenza di cache semplificando di molto il progetto del processore e la gestione della coerenza considerando che il sistema ha più unità di calcolo. Inoltre all'aumento dei nuclei di calcolo i benefici dovrebbero aumentare.
- Molti processori permettono di utilizzare la cache della CPU come scatchpad.
Molti DSP utilizzano la scatchpad. Molti processori per l'accelerazione tridimensionale (come quello della PlauStation 2) utilizzano un DSP per le trasformazioni vertex al posto delle moderne GPU che preferiscono utilizzare molte unità semplici con una loro cache.
- NVIDIA 8800 GPU funzionante in modalità CUDA ha una scatchpad di 16 kb per gestire i dati tra thread.
- Il processore fisico Phys X dell'Agiea utilizza una scatchpad con una modalità simile a quella del Cell. La scatchpad viene utilizzata per memorizzare i dati sulle collisioni e sulla fisica degli elementi. Inoltre il sistema permette di scambiare la scatchpad tra i vari elementi del processore a seconda della necessità.
Alternative
Diverse architetture come i processori PowerPC invece di utilizzare scatchpad o di assegnare alla cache la possibilità di fungere anche da scatchpad preferiscono avere delle istruzioni di controllo della cache. Queste istruzioni sembrano mostrare benefici analoghi alle scatchpad con il vantaggio di essere compatibili con le normali cache.
Cache L2 contro memoria comune
Per quanti riguarda la comunicazione interprocesso in un sistema multicore si hanno benefici analoghi alla scatchpad utilizzando una cache di secondo livello comune come nei processori Core 2 Duo o nel processore Xenon utilizzato dalla console Xbox 360. La cache di secondo livello permette di condividere i dati tra i core del processore senza dover passare dalla lenta memoria centrale ma se il programma viene sviluppato per utilizzare la comunicazione DMA tra le memorie locali dei core una gestione a scatchpad tende ad essere più efficiente.