Explain the difference between Programmable ROM (PROM), Erasable Programmable ROM (EPROM) and Electrically Erasable Programmable ROM (EEPROM), and place these memories in the wider context of the Cambridge International AS & A‑Level Computer Science syllabus.
| Register | Purpose |
|---|---|
| Program Counter (PC) | Holds address of next instruction to fetch |
| Memory Address Register (MAR) | Transfers address between CPU and memory bus |
| Memory Data Register (MDR) | Transfers data to/from memory |
| Accumulator (ACC) | Primary arithmetic/logic operand register |
| General‑Purpose Registers (GPRs) | Temporary storage for intermediate results |
| Status/Flag Register | Holds condition flags (Zero, Carry, Overflow, etc.) |
| Bus type | Function | Typical width |
|---|---|---|
| Address bus | Carries memory addresses from CPU to memory/I/O | 16‑32 bits (AS) / 32‑64 bits (A‑Level) |
| Data bus | Transfers actual data between CPU, memory and peripherals | 8‑64 bits depending on architecture |
| Control bus | Signals such as Read/Write, Clock, Interrupt Request (IRQ) | Variable, usually a few lines |
| Gate | Symbol | Truth table (A B → Y) |
|---|---|---|
| AND | & | 00→0, 01→0, 10→0, 11→1 |
| OR | ≥1 | 00→0, 01→1, 10→1, 11→1 |
| NOT | ¬ | 0→1, 1→0 |
| NAND | ⊼ | inverse of AND |
| NOR | ⊽ | inverse of OR |
| XOR | ⊕ | 01→1, 10→1, 00→0, 11→0 |
ROM cells are built from MOSFET transistors, which are themselves realisations of these basic logic functions.
| Feature | PROM | EPROM | EEPROM |
|---|---|---|---|
| Initial state (after manufacture) | All bits = 1 (fuses intact) | All bits = 1 (floating gates neutral) | All bits = 1 (floating gates neutral) |
| Programming mechanism | High‑current pulse burns a fusible link → bit becomes 0 | High‑voltage (~20 V) applied to control gate; electrons tunnel onto floating gate → bit becomes 0 | Electrical voltage applied to selected cell(s); electrons moved onto/off floating gate → 0 or 1 |
| Erase method | Not erasable – programming is permanent | Whole chip exposed to intense UV‑light (≈ 253 nm) for 15 s – 5 min → all cells return to 1 | Selective erase (byte‑wise or bit‑wise) by applying a reverse voltage; no UV required |
| Re‑programming capability | Impossible after first programming | Possible after a full‑chip erase; typical endurance 10³ – 10⁴ cycles per cell | Possible many times; typical endurance 10⁵ – 10⁶ cycles per cell |
| Typical applications | Early boot ROM, one‑time configuration data | Older BIOS chips, programmable logic where occasional updates were needed | Modern BIOS/UEFI, micro‑controller configuration bits, smart cards, data loggers, secure‑boot keys |
| Physical characteristics | Opaque package; no window | Clear quartz window on top of the package for UV exposure | Opaque package; no window (often DIP, SOP or QFN) |
| Erase / program time | – | Erase: 15 s – 5 min (UV); Program: a few ms per byte | Erase/program: µs to ms per byte (depends on device) |
1 = link intact (low resistance); 0 = link blown (high resistance).At power‑up the CPU fetches the first instruction from a fixed ROM address (usually 0x0000). This instruction typically resides in a PROM/EPROM/EEPROM and contains the bootstrap routine that initialises the hardware, performs a memory‑test, and loads the operating system from secondary storage.
Firmware stored in ROM is written in assembly or machine code. The source code is assembled (or compiled) into binary op‑codes, which are then programmed into PROM/EPROM/EEPROM. Understanding the translation process helps students see why the code must be exact and why errors require re‑programming the ROM.
Boot firmware often implements low‑level protocols (UART, SPI, I²C) that enable the CPU to communicate with peripherals during start‑up. The protocol handling code resides in ROM/EEPROM, illustrating the close relationship between memory technology and communication concepts.
The BIOS/UEFI stored in EEPROM can be regarded as a small virtual machine: it interprets hardware configuration, performs POST (Power‑On Self‑Test), and then hands control to the OS loader. Understanding this helps students see the abstraction layers from hardware up to operating systems.
Simple algorithms are often used to read/write EEPROM. Example (pseudo‑code) for reading a version number:
address = 0x00FF // EEPROM location for firmware version
version = EEPROM_READ(address)
IF version < required_version THEN
DISPLAY "Update required"
END IF
This demonstrates array indexing, conditionals and I/O – core algorithmic ideas applied to hardware.
| Memory Type | Typical Device | Why It Is Chosen |
|---|---|---|
| PROM | Early home‑computer boot ROM (e.g., Sinclair ZX80) | Cost‑effective permanent storage; firmware never changes. |
| EPROM | IBM PC BIOS chips (pre‑1990s) | Occasional BIOS updates were required; whole‑chip UV erase was acceptable. |
| EEPROM | Modern motherboard BIOS/UEFI, micro‑controller configuration registers, smart‑cards | Field updates needed; selective erase saves time and wear; can be programmed in‑circuit. |
| Flash (block‑wise EEPROM) | USB flash drives, SSDs, firmware for routers | Large capacity, fast block erase, inexpensive for mass storage. |
Your generous donation helps us continue providing free Cambridge IGCSE & A-Level resources, past papers, syllabus notes, revision questions, and high-quality online tutoring to students across Kenya.