Per iniziare dall'inizio, un computer ha tre parti principali:
- Un processore che esegue istruzioni ed esegue calcoli
- Memoria primaria che contiene istruzioni e dati, direttamente indirizzabili dal processore.
- Dispositivi di ingresso/uscita usati per comunicare con l'ambiente.
Focalizzandosi su (2) Memoria primaria. Il termine "direttamente indirizzabile" significa che è conforme al bus di memoria del processore, quindi il processore applica un indirizzo al bus degli indirizzi, eventualmente dati al bus dei dati e segnali appropriati per accedere alla memoria. La memoria immagazzina i dati dal processore (in scrittura) o restituisce i dati al processore (in lettura) in tempo per l'utilizzo da parte del processore.
Le memorie secondarie come i dischi rigidi sono considerate dispositivi di Input/Output in quanto sono coinvolte operazioni più complesse di quelle cablate nel processore.
I primi computer (pre-semiconduttori) avevano vari tipi di memoria. Le scelte comuni erano le linee di ritardo e le memorie a tamburo, quest'ultima un tamburo magnetico che ruotava ad alta velocità molto simile ai dischi rigidi di oggi. La memoria a tamburo era meccanicamente goffa e poteva contenere solo pochi kiloWords di informazioni ma era facile da interfacciare. Quando il processore aveva bisogno di una certa posizione nella memoria, aspettava che il tamburo ruotasse fino alla posizione corretta e poi leggeva o scriveva una parola in quella posizione. Ovviamente il tempo di accesso alla memoria dipendeva dalla posizione corrente e da quale indirizzo il processore richiedeva. Riordinare i blocchi di istruzioni e i dati poteva dare enormi accelerazioni.
In seguito i computer furono dotati di memorie a nucleo magnetico. Queste potevano essere raggiunte in qualsiasi ordine e ogni parola di memoria poteva essere raggiunta con lo stesso ritardo. In questo periodo fu introdotto il termine Random Access Memory (RAM) per indicare che le parole di memoria potevano essere accedute in ordine arbitrario senza alcuna penalità di performance.
Le memorie centrali erano molto costose ma avevano il vantaggio di conservare il contenuto quando la macchina veniva spenta. Cioè, una volta programmato un bootloader necessario per avviare il sistema, rimaneva lì anche dopo un ciclo di accensione (nota per gli interessati: in realtà una cella di memoria core perde il suo contenuto quando viene letta, quindi c'era un circuito che lo riscriveva dopo una lettura).
Con i semiconduttori è stato possibile produrre memorie con capacità e velocità molto più elevate a un costo inferiore. Il termine RAM fu mantenuto per le memorie che il processore poteva leggere e scrivere in ordine arbitrario direttamente sul bus di memoria. Ma questo tipo di memorie perdono il loro contenuto quando l'alimentazione viene spenta.
Un computer non può fare nulla di significativo se il processore non viene alimentato con istruzioni e questo richiedeva una memoria che contenesse istruzioni all'avvio del computer.
I vecchi computer spesso avevano programmi cablati e i produttori di semiconduttori fornivano l'equivalente in memorie di sola lettura (ROM). Il produttore creava una linea di produzione di ROM con il tuo contenuto specifico. Questo era abbastanza costoso e niente che una piccola azienda potesse permettersi. Invece potevano usare ROM programmabili (PROM) che contenevano fusibili elettronici che si bruciavano durante la programmazione. Così le PROM erano programmabili una sola volta. Più tardi ci furono le Erasable PROM (EPROM) che di solito venivano cancellate completamente da una forte luce ultravioletta per circa mezz'ora, poi le Electrically Erasable PROM (EEPROM) che erano cancellabili dal processore. La differenza con le RAM è che il tempo per una lettura è da nanosecondi a microsecondi, mentre una scrittura o una cancellazione richiede millisecondi, almeno 1000 volte di più, quindi non sono utilizzabili come memoria di lavoro come le memorie RAM.
Nota che entrambe quelle che chiamiamo memorie RAM e ROM sono in effetti memorie ad accesso casuale, quindi usare il termine RAM solo per la memoria leggibile/scrivibile è un po' sciocco. Un termine migliore (usato anche storicamente) sarebbe RWM per Read/Write Memory in opposizione a Read Only Memory.
Abbiamo probabilmente mantenuto il termine RAM perché è più facile da dire rispetto a RWM.