Electrically Erasable Programmable Read-Only Memory (EEPROM):
If it's using Read-Only Memory (ROM) then how am I able to write to it?
Electrical Engineering Stack Exchange is a question and answer site for electronics and electrical engineering professionals, students, and enthusiasts. It only takes a minute to sign up.Sign up to join this community
The EEPROM acronym has some history which follows the development of the technology.
ROM: Read-Only Memory. Written at the factory.
PROM: Programmable Read-Only Memory but programmable (once) by the user. Really a one-time programmable, forever readable memory. Get it wrong and you dump the chip.
EPROM: Eraseable Programmable Read-Only Memory. Usually erased using UV light through a quartz window above the chip. A bit of trouble but very useful.
EEPROM: Electrically Erasable Programmable Read-Only Memory. Can be erased or re-written under program control.
Figure 1. An Intel 1702A EPROM, one of the earliest EPROM types, 256 by 8 bit. The small quartz window admits UV light for erasure. Source: Wikipedia EPROM.
So, I hear you say, why do they call it eepROm when it is writeable? The answer to this is, I suspect, that, unlike RAM (random access memory) it holds its contents during power cycle and, therefore, behaved more like a ROM.
I'm baffled by how many commentators here think that the term ROM is solely a marketing ploy or referring only to loss of data on power-off.
PROM is very much 'read only', in the qualified sense that writing to it in the same manner and contexts as you would with an 'equivalent' RAM is impossible. This is because E/EPROM requires:
...all of which mean that the act of writing to such memory is slow, can't be efficiently interleaved with read operations, actively wears out the chip, etc.
PROM is on a totally different league than RAM with equivalent read specs. Hence why it wasn't marketed as any form of RAM. The backlash would've been colossal!
So, we could perhaps call it Read Mostly Memory or, for the pedants, EWRPROM: Eventually Writable, Runtime Practically Read Only Memory... but in practical terms, ROM is bang on the mark.
Early programmable memory devices were intended to be written while plugged into one device, and then read while plugged into another. While the devices could generally be read while in the programming fixture (so the programming fixture could confirm that they were written correctly), programming the devices would often require applying unusual voltages that would not be available in most devices that needed to read them. Further, write operations were orders of magnitude slower than read operations. Later devices have been enhanced to eliminate such requirements, allowing them to be programmed in the device where it will be used after programming, but the difference between read and write speeds remains.
I discovered a potential answer while writing the question
From looking at this ROM article on Wikipedia it sounds like some ROM's will allow writing but if it does then the write speed will be slow or writing in general will be difficult, if possible.
Another fascinating tidbit is that EEPROM has a limited amount of times it can be written to. The article mentions that the EEPROM can be wiped clean and written to thousands of times, but still!
It's Electrically Erasable, so you can write to it.
It makes no sense when you expand ROM into words. But my understanding is that EPROM was so named by its inventor, Intel, as marketing enticement that meant "Just like ROM - but you can change it yourself". This was in a 1972 world where ROM meant umpteen grand for a mask change.
EEPROM follows on from that precedent.
EEPROMs and even Flash memories use an evolution of the same technology (floating gate) that EPROMs use, not technology that would be used for SRAM or DRAM devices.
EEPROMs are strongly asymmetric in read vs write behaviour: Read cycles are practically unlimited, fast (tens or hundreds of nanoseconds), and always possible with only the main operating voltages applied. Write cycles are much slower and sometimes need extra voltages applied (an 2816 parallel EEPROM will need an extra 12V supply for some programming operations, and will have a write time in the hundreds of microseconds or even slower depending on the exact make and model, and have limited write cycles).
Flash memories are not random access for writing (overwriting a word requires you to erase more than a word), some types (NAND) are not even random access for reading.
Note that some (not all!) devices marketed as PROMs or ROMs were internally OTP (windowless) EPROMs.
EPROM/PROM is READ ONLY at RUNTIME. When you run the intended application (PC, embedded controller, etc) it can not be written to by the running program. You have to take it out and enter it into a special writing apparatus, where you write all of the contents at once.
As os being pointed out to me in the comments, EEPROM could be set up to be writeable at runtime because it is electonically writeable. But in everyday use it is not writeable, the architecture usually prevents it. Usually you use a special "flash" utility provided by the manufacturer to access and write it, and is usually written all at once rather than in a random access mode. Someone in an answer above made up a big acronym for it that would apply.
RAM, including NVRAM, can be written at runtime by the host device.
Though all ROM is non-volatile and MOST RAM is volatile, NVRAM is non-volatile so that is not the only discerning difference between them.