# Read Only Memory

In elettronica e informatica, una memoria a sola lettura, meglio nota come ROM (Read Only Memory), indica un tipo di memoria non volatile in cui i dati sono memorizzati tramite collegamenti elettronici fisici e stabili.
Contrariamente alla maggior parte delle unità di memoria di massa il suo contenuto non è modificabile durante il normale funzionamento, ma può esserlo, con diverse tecniche, in fase di progettazione, prototipazione o costruzione. Oppure, per talune applicazioni, il contenuto della memoria può essere aggiornato anche quando il componente è in esercizio. Nella memoria ROM detta anche rom di maschera perché scritta all'atto di fabbricazione del microprocessore in genere è contenuto microcodice, ovvero una serie di istruzioni macchina elementari.
Dalla nascita dei dispositivi mobili, il termine ROM ha assunto un significato più specifico, derivato da quello tradizionale.

## Descrizione
### Utilizzo del termine

L'acronimo identifica in senso stretto le ROM a maschera, il cui nome deriva dal processo di litografia utilizzato nei circuiti integrati (chip), in cui una fotomaschera permette la creazione del chip. Il termine è tuttavia utilizzato anche per identificare memorie che possono essere cancellate e riprogrammate tramite processi particolari, che avvengono più raramente dei normali processi di lettura e scrittura che caratterizzano le restanti classi di memorie informatiche.
Di queste vi sono le memorie scrivibili una sola volta, come le PROM, e riscrivibili più volte, come le EPROM, EEPROM, EAROM e flash ROM.

### Generalità

A differenza degli altri elementi di memoria, le memorie a sola lettura non programmabili appartengono alla categoria dei circuiti combinatori, dal momento che in funzione degli ingressi forniscono diverse relazioni combinatorie. Si tratta comunque di circuiti di memoria, dal momento che memorizzano una specifica relazione tra gli ingressi e le uscite: per n bit in ingresso una ROM restituisce 2$^n$ combinazioni di m bit in uscita.
Gli elementi fisici di memoria utilizzati dalle ROM sono diodi o transistor, e la loro scelta dipende dalle caratteristiche di utilizzo del dispositivo; per applicazioni che richiedono bassi tempi di lettura si usano transistor a giunzione bipolare, mentre per memorie ad alta capacità si sfrutta la tecnologia a transistor ad effetto di campo.

### Scrittura

L'inglese tecnico usa il verbo flash per descrivere l'operazione di scrittura istantanea (o sovrascrittura) del contenuto di una memoria ROM (invece del consueto install) o, meglio, di una memoria flash. Pertanto, "ROM flashing" significa "copia rapida (di qualcosa) nella (memoria) ROM" o trasferimento rapido alla (memoria) ROM" o simili. In italiano, nel mondo IT, si rende con "flashare" (ad esempio nel caso dell'aggiornamento del firmware BIOS o UEFI) oppure per sovrascrivere nuovi firmware su dispositivi mobili. In pratica, il flashing (lett. "lampeggiamento") è l'installazione nel caso di un firmware.
L'impiego del termine flash (lampo in inglese) si spiega perché il processo di scrittura è "fulmineo" cioè molto veloce.

## Architettura

L'architettura delle memorie ROM è una matrice in cui ad ogni intersezione di riga e colonna vi è una cella di memoria, e può essere schematizzata come un decodificatore di indirizzo e un codificatore, realizzato a matrice di diodi o transistor, che possono essere sia a giunzione bipolare che ad effetto di campo. Ad ogni cella della matrice corrisponde una locazione di memoria in cui viene scritto il bit in fase di costruzione.
La lettura avviene tramite l'invio delle linee di indirizzo al decodificatore: esso ha il ruolo di attivare una riga della matrice del codificatore, la quale restituisce l'informazione contenuta nelle memorie allocate nelle intersezioni della riga selezionata e le colonne.
Di seguito si illustrano i tipi di ROM più comuni e la loro architettura in una schematizzazione semplificata rispetto alle ROM in commercio.

### ROM a diodi

La memoria in figura è una memoria a matrice di diodi. Essa è costituita, come illustrato sopra, da un decodificatore di riga a tre bit (l'intera parte di circuito a sinistra, terminante con la serie di porte AND) e dal codificatore a matrice di diodi. È evidente la sua struttura a griglia. Per ognuna delle otto combinazioni delle tre linee di indirizzo A0, A1, A2 in ingresso al decodificatore, si abilita una sola delle otto uscite del decodificatore. I diodi di quella riga trasferiscono il livello logico alto alla rispettiva colonna; i diodi delle altre righe sono interdetti perché l'anodo è sicuramente a potenziale zero.
Questa è la tabella della verità della memoria illustrata in figura:
| $A2$ | $A1$ | $A0$ | $Y4$ | $Y3$ | $Y2$ | $Y1$ |
| 0 | 0 | 0 | 1 | 0 | 0 | 1 |
| 0 | 0 | 1 | 1 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 |
Come si evince dalla tabella, abilitata una riga, se è presente un diodo si ha un livello logico alto nella colonna corrispondente, se il diodo non è presente, si ha un livello logico basso.
Difetto delle memorie ROM a diodi è la lentezza del loro funzionamento.

### ROM a BjT

La memoria in figura è una memoria ROM a transistor BJT. Tutti i collettori dei transistor sono collegati all'alimentazione + Vcc, alle basi arrivano le linee di uscita di un decodificatore (non rappresentato in figura), e infine alcuni emettitori sono collegati alle linee di uscita Y1, Y2, Y3, altri non lo sono. I transistor lavorano come interruttori elettronici, perciò o sono in saturazione (interruttore chiuso), o sono interdetti (interruttore aperto).
In base alla combinazione del prodotto A1xA0, viene attivata una linea in ingresso (riga) alla volta: tutti i transistor con base collegata a quella riga vengono eccitati. Se gli emettitori sono collegati alla colonna corrispondente, essendo i transistor in saturazione, il potenziale +Vcc (corrispondente ad un livello logico alto) viene trasferito alle uscite corrispondenti a ciascun transistor. Per la memoria in figura,
* con A1=0 e A0=0 viene eccitata la prima riga; quindi
Y3 Y2 Y1 = 1 1 1
* con A1=0 e A0=1 viene attivata la seconda riga; quindi
Y3 Y2 Y1 = 1 1 0
* con A1=1 e A0=0 viene attivata la terza riga; quindi
Y3 Y2J Y1 = 1 0 1
* con A1=1 e A0=1 viene attivata la quarta riga; quindi
Y3 Y2 Y1 = 0 1 1 In fase di costruzione di una memoria ROM a BJT l'atto di collegare o meno l'emettitore di un transistor alla colonna corrispondente equivale quindi a mettere o meno un diodo in una memoria ROM a matrice di diodi. Le memorie ROM a BJT, a differenza di quelle a matrice di diodi, hanno una maggior velocità di funzionamento.

## Tipologia della memoria a sola lettura
### Memorie a stato solido

| ROM a maschera (MROM) | Primo tipo di ROM a stato solido realizzata. |

### Dischi ottici

| CD prestampato | Il CD inizialmente è stato implementato come memoria a sola lettura. In seguito è stato implementato anche come memoria scrivibile una sola volta (CD-R) e memoria a lettura-scrittura (CD-RW). |
| CD-ROM | Il CD-ROM è un tipo di CD e per definizione è una memoria a sola lettura. |
| CD Audio prestampato | Il CD Audio è un tipo di CD e inizialmente è stato implementato come memoria a sola lettura, in seguito è stato implementato anche come memoria scrivibile una sola volta (con la nascita del CD-R) e memoria a lettura-scrittura (con la nascita del CD-RW). |
| Video CD prestampato | Il Video CD è un tipo di CD e inizialmente è stato implementato come memoria a sola lettura, in seguito è stato implementato anche come memoria scrivibile una sola volta (con la nascita del CD-R) e memoria a lettura-scrittura (con la nascita del CD-RW). |
| CD-i | |
| Photo CD prestampato | |
| DVD prestampato | Il DVD inizialmente è stato implementato come memoria a sola lettura. In seguito è stato implementato anche come memoria scrivibile una sola volta (DVD-R, DVD+R, DVD-R DL e DVD+R DL) e memoria a lettura-scrittura (DVD-RW, DVD+RW, DVD-RW DL, DVD+RW DL e DVD-RAM). |
| DVD-ROM | Il DVD-ROM è un tipo di DVD e per definizione è una memoria a sola lettura. |
| DVD-Video prestampato | Il DVD-Video è un tipo di DVD e inizialmente è stato implementato come memoria a sola lettura, in seguito è stato implementato anche come memoria scrivibile una sola volta (con la nascita del DVD-R, DVD+R, DVD-R DL e DVD+R DL) e memoria a lettura-scrittura (con la nascita del DVD-RW, DVD+RW, DVD-RW DL, DVD+RW DL e DVD-RAM). |
| DVD-Audio prestampato | Il DVD-Audio è un tipo di DVD e inizialmente è stato implementato come memoria a sola lettura, in seguito è stato implementato anche come memoria scrivibile una sola volta (con la nascita del DVD-R, DVD+R, DVD-R DL e DVD+R DL) e memoria a lettura-scrittura (con la nascita del DVD-RW, DVD+RW, DVD-RW DL, DVD+RW DL e DVD-RAM). |
| Super Audio CD | Il Super Audio CD è utilizzato per l'audio digitale ad alta definizione ed è stato implementato esclusivamente come memoria a sola lettura. |
| DualDisc | |
| Blu-ray Disc prestampato | |
| BD-ROM | Il BD-ROM è un tipo di Blu-ray Disc e per definizione è una memoria a sola lettura. |
| HD DVD | L'HD DVD, inizialmente concorrente del Blu-ray Disc, oggi è stato abbandonato. L'HD DVD è stato commercializzato esclusivamente come memoria a sola lettura. Il primo masterizzatore HD DVD, supportante i formati HD DVD-R e HD DVD-R DL, era stato presentato al CES di Las Vegas del gennaio 2008 ma poi non è stato commercializzato a causa dell'abbandono dell'HD DVD annunciato ufficialmente il 19 febbraio 2008. |
| HD DVD-ROM | L'HD DVD-ROM è un tipo di HD DVD e per definizione è una memoria a sola lettura. |

## Tipologia di ROM intesa nell'accezione più comune

| MROM (anche chiamata ROM a maschera) | Primo tipo di ROM a stato solido realizzata. I dati vengono scritti nella ROM a maschera nella sua fase di costruzione. Comportava notevoli costi di produzione dovuti alla progettazione delle maschere per l'impiantazione ionica, richiedeva infatti di cambiare l'intera linea di produzione delle stesse ogni qual volta fosse necessario modificare anche una minima parte dei dati in essa contenuti. |
| PROM | "P" sta per programmable ed è una evoluzione della ROM a maschera atta a ridurne i costi di produzione. Può essere scritta dall'utente successivamente alla sua costruzione attraverso un'apparecchiatura speciale ma una volta scritta non può più essere riscritta. |
| EPROM | Evoluzione della PROM ossia Erasable Programmable. Può essere scritta e riscritta dall'utente successivamente alla sua costruzione. La cancellazione dei dati per l'operazione di riscrittura avviene mediante esposizione ai raggi UV. |
| EEPROM | Evoluzione della EPROM. Può essere scritta e riscritta dall'utente successivamente alla sua costruzione. La cancellazione dei dati per l'operazione di riscrittura avviene elettricamente mediante tensioni più elevate (20-30 volt) rispetto a quelle di funzionamento normale. |
| EAROM | È un tipo di EEPROM. La sua particolarità è che può essere modificata un bit alla volta invece che a blocchi di bit come le altre EEPROM. |
| Flash ROM | "Flash ROM" è semplicemente il nome con cui viene chiamata una memoria flash quando è utilizzata come ROM intesa nell'accezione più comune. La memoria flash è un tipo di EEPROM che per le sue prestazioni è usata, non solo come ROM intesa nell'accezione più comune, ma anche come memoria di massa. |

## ROM dispositivi mobili

Esiste un altro uso del termine, comparso solo a partire dal decennio 2010. Questo significato di ROM è però un adattamento a quello originale ed è, a tale riguardo, improprio poiché fisicamente il contenuto della memoria sarebbe cancellabile e modificabile con mezzi ordinari. Infatti, nel mondo dei dispositivi mobili ci si riferisce spesso al sistema operativo installato sul dispositivo con il termine ROM. Pertanto, la ROM in questo caso è lo spazio occupato dal firmware sulla memoria in cui risiede (archiviata in una cartella di sistema e nascosta). Il motivo di questo utilizzo sta nel fatto che gli smartphone e i tablet, per loro natura, non possono (o non dovrebbero) subire delle modifiche in scrittura dei file e cartelle che formano il sistema operativo, da parte dell'utente. La ROM è formata dal sistema operativo più le applicazioni aggiunte dal produttore o dal provider nonché i contenuti di finitura (suonerie, temi, ecc.). Per la precisione, solitamente il produttore del dispositivo indica, tra le caratteristiche HD, la dimensione di memoria (interna) totale ovvero quella al lordo dello spazio allocato per il firmware (indicato anche come "contenuti preinstallati"). In pratica, la memoria interna utilizzabile dall'utente per l'archiviazione dei contenuti è minore di quella indicata dal produttore sulla scheda tecnica.
Attualmente, la dizione ROM associata al firmware è impropria dal punto di vista hardware perché ormai il firmware, protetto in scrittura via software, è installato su memorie con chip eMMC o UFS che non sono di tipo ROM, le stesse usate per l'archiviazione interna.
Nel mondo Android, ad esempio, sono distribuite le custom ROM (denominate con nomi dei progetti open source) da installare (flash) al posto di quelle compilate dai produttori dei dispositivi oppure sviluppate dai produttori stessi come nuova Interfaccia utente a partire da Android (o procedura di modding).