ROM Dual-Port: Accesso Simultaneo per Sistemi ad Alto Throughput
Una ROM dual-port (Read-Only Memory) è un dispositivo di memoria con due porte di indirizzo/dati indipendenti che possono leggere lo stesso array di memoria contemporaneamente. Elimina il collo di bottiglia della memoria single-port in sistemi dove più agenti (CPU, DMA, DSP, GPU) necessitano accesso simultaneo in lettura.
Architettura
- Array Memoria Condiviso: Singolo storage fisico (ROM maschera, OTP, o Flash embedded).
- Porta A e Porta B: Ciascuna ha Bus Indirizzo, Bus Dati, Chip Enable, Output Enable, Clock (se sincrono) indipendenti.
- Logica di Arbitrato: Gestisce richieste di accesso simultanee. Politiche: priorità fissa, round-robin, o "ultima scrittura vince" (per RAM). Per ROM, letture simultanee sono non conflittuali — entrambe le porte outputtano dati nello stesso ciclo.
Perché ROM Dual-Port? (Benefici)
- Letture Concorrenti senza Contenzione: CPU recupera istruzione mentre DMA carica texture — nessun stato di attesa.
- Latenza Deterministica: Nessun ritardo di arbitrato per letture (a differenza di dual-port RAM dove esistono conflitti lettura/scrittura).
- Design Sistema Semplificato: Nessun bisogno di multiplexer bus esterni, cache o shadow RAM per condividere una singola ROM.
- Sicurezza: Una porta per boot sicuro (immutabile), altra per applicazione — separazione hardware applicata.
Applicazioni Tipiche
| Applicazione | Porta A | Porta B |
|---|---|---|
| Controller Grafico / Display | GPU: Fetch texture/geometria | Controller Display: Scanout framebuffer |
| DSP / Audio | Core: Lookup coefficienti/tabelle | DMA: Streaming campioni |
| SoC Embedded / IoT | MCU: Codice boot + Firmware | Debug / Trace / Host esterno |
| Networking / Switch ASIC | Pipeline Ingresso: Tabelle lookup | Pipeline Uscita: Regole riscrittura |
| ECU Automotive | Core 0 Lockstep: Codice | Core 1 Lockstep: Codice (confronta) |
| Configurazione FPGA | Controller Config: Bitstream | Logica Utente: ROM costante (init LUT) |
Limiti
- Area e Costo: ~1,5–2× single-port ROM (duplicati decoders, sense amps, output muxes, arbitrato).
- Densità: Capacità max inferiore per area die.
- Potenza: Due porte attive → corrente dinamica maggiore.
- Disponibilità: Meno comune come componente discreto; per lo più embedded in ASIC/SoC/FPGA. Dual-port NOR Flash/ROM discreto esiste (es. Cypress/Infineon, Micron, Winbond) ma di nicchia.
ROM Dual-Port vs RAM Dual-Port
- ROM: Sola lettura. Letture simultanee sempre sicure. Usata per costanti, firmware, LUT, codice boot.
- RAM: Lettura/Scrittura. Richiede arbitrato per accesso simultaneo (lettura/lettura OK, lettura/scrittura o scrittura/scrittura conflitto). Usata per buffer condivisi, FIFO, frame store, cassette postali inter-core.
Alternative Moderne
- Single-Port + Cache: Cache L1/L2 assorbe la maggior parte degli accessi; single-port ROM/Flash principale sufficiente.
- XIP (Execute-in-Place) Flash: Flash mappato memoria Quad/OctaSPI con cache — evita ROM separata.
- Block RAM FPGA (True Dual-Port): Configurabile come ROM (file init). Gratis nel tessuto.
Sommario
La ROM dual-port fornisce accesso simultaneo in lettura garantito hardware per due master indipendenti. Scambia area di silicio per throughput deterministico, senza contenzione — critico in grafica, DSP, safety-critical lockstep e networking ad alta velocità. Nei SoC moderni, spesso sostituita da cached single-port Flash o FPGA BRAM.