Uma ROM dual-port (Read-Only Memory) é um dispositivo memória com duas portas endereço/dados independentes que podem ler o mesmo array memória concorrentemente. Elimina gargalo memória single-port em sistemas onde múltiplos agentes (CPUs, DMA, DSP, GPU) precisam acesso leitura simultâneo.
Arquitetura
- Array Memória Compartilhado: Armazenamento físico único (ROM mascarada, OTP, ou Flash embarcado).
- Porta A & Porta B: Cada uma tem Barramento Endereço, Barramento Dados, Chip Enable, Output Enable, Clock independentes (se síncrona).
- Lógica Arbitragem: Trata requisições acesso simultâneo. Políticas: prioridade fixa, round-robin, ou "last write wins" (para RAM). Para ROM, leituras simultâneas não conflitam — ambas portas saem dados no mesmo ciclo.
Por Que Dual-Port ROM? (Benefícios)
- Leituras Concorrentes Sem Contenção: CPU busca instrução enquanto DMA carrega textura — sem wait states.
- Latência Determinística: Sem atraso arbitragem para leituras (diferente dual-port RAM onde conflitos leitura/escrita existem).
- Projeto Sistema Simplificado: Sem necessidade multiplexadores barramento externos, caches, ou shadow RAM para compartilhar ROM única.
- Segurança: Uma porta para boot seguro (imutável), outra para aplicação — separação hardware-enforced.
Aplicações Típicas
| Aplicação | Porta A | Porta B |
| Gráficos / Controlador Display | GPU: Busca textura/geometria | Controlador Display: Scanout framebuffer |
| DSP / Áudio | Core: Lookup coeficiente/tabela | DMA: Streaming amostras |
| SoC Embarcado / IoT | MCU: Boot code + Firmware | Debug / Trace / Host Externo |
| Networking / Switch ASIC | Pipeline Entrada: Tabelas lookup | Pipeline Saída: Regras rewrite |
| ECU Automotivo | Core 0 Lockstep: Código | Core 1 Lockstep: Código (comparação) |
| Configuração FPGA | Controlador Config: Bitstream | Lógica Usuário: ROM constante (init LUT) |
Limitações
- Área & Custo: ~1,5–2× ROM single-port (decodificadores duplicados, sense amps, mux saída, arbitragem).
- Densidade: Menor capacidade máxima por área die.
- Potência: Duas portas ativas → maior corrente dinâmica.
- Disponibilidade: Menos comum componente discreto; maiormente embarcado em ASICs/SoCs/FPGAs. Dual-port NOR Flash/ROM discreto existe (ex.: Cypress/Infineon, Micron, Winbond) mas nicho.
Dual-Port ROM vs. Dual-Port RAM
- ROM: Somente leitura. Leituras simultâneas sempre seguras. Usada para constantes, firmware, LUTs, boot code.
- RAM: Leitura/Escrita. Requer arbitragem acesso simultâneo (leitura/leitura OK, leitura/escrita ou escrita/escrita conflito). Usada para buffers compartilhados, FIFOs, frame stores, mailboxes inter-core.
Alternativas Modernas
- Single-Port + Cache: L1/L2 cache absorve maior acessos; single-port ROM/Flash principal basta.
- XIP (Execute-in-Place) Flash: Flash mapeado memória Quad/OctaSPI com cache — evita ROM separada.
- FPGA Block RAM (True Dual-Port): Configurável como ROM (arquivo init). Grátis no fabric.
Resumo
Dual-port ROM fornece acesso leitura simultâneo garantido por hardware para dois mestres independentes. Troca área silício por throughput determinístico, sem contenção — crítico em gráficos, DSP, lockstep safety-critical, networking alta velocidade. Em SoCs modernos, frequentemente substituída por Flash single-port cached ou FPGA BRAM.