La memoria ad accesso casuale interna (RAM) è una memoria del computer che è incorporata direttamente nel chip di un microcontrollore, come l’unità di elaborazione centrale (CPU) di un computer. Può essere utilizzato dai programmatori per aumentare la velocità delle funzioni del programma indirizzando direttamente la RAM interna, garantendo che i processi critici vengano accodati ed elaborati più velocemente e con maggiore priorità dalla CPU. Ciò può velocizzare notevolmente le applicazioni a uso intensivo del processore perché le istruzioni utilizzate di frequente possono essere passate alla CPU molto più velocemente rispetto al disegno da una RAM esterna.
Le CPU hanno tre livelli di cache o RAM interna. La cache del processore è composta da RAM statica (SRAM), che non è la stessa della memoria tipica installata sulla scheda madre, chiamata RAM dinamica (DRAM). Quando la CPU cerca i dati, controlla prima la cache di livello 1 (L1), quindi il livello 2 (L2), quindi il livello 3 (L3). Solo dopo estrarrà i dati dalla DRAM.
All’interno del processore, la cache L1 è assegnata a ogni core del processore stesso. Questa è la RAM interna più veloce, perché funge da buffer per le istruzioni inviate a ciascun core del processore come dettato dal programma che richiede l’elaborazione. Nei processori multi-core, questo può accelerare notevolmente l’elaborazione se più core vengono indirizzati individualmente tramite richieste di cache L1.
La cache L2 è nel pacchetto della CPU e quindi è ancora considerata RAM interna. Non è costruito direttamente sul chip della CPU effettivo come lo è la cache L1. Ogni core ha comunque la propria cache L2 ad esso dedicata e quindi può operare in parallelo, sfruttando le velocità L2. Tuttavia, la cache L2 è più lenta della cache L1.
La cache L3 non è all’interno del pacchetto CPU, quindi non è considerata RAM interna ma funziona insieme ad essa. È la RAM esterna più veloce disponibile all’interno di un computer. Tutti i core della CPU condividono la cache L3.
L’intero processo può essere visto come un accodamento e scomposizione dei dati dalla DRAM esterna, alla RAM interna e infine alle istruzioni di elaborazione effettive. Alcune funzioni all’interno di qualsiasi programma sono stabilite con una priorità più alta di altre e queste vengono spostate in cima alla coda come parte dell’ottimizzazione del singolo programma. I dati con la priorità più alta vengono indirizzati direttamente alla cache L1 per un’elaborazione più rapida e le code con priorità più bassa durante l’intero processo. La differenza principale è dove la cache viene elaborata in un metodo “pull from the wait queue”, la RAM interna è indirizzabile tramite software, quindi i dati possono essere assegnati in modo specifico ai singoli livelli di RAM interna.