http://dmitry.gr/index.php?r=05.Projects&proj=07.%20Linux%20...
In order to run Linux on an ATmega1284p, that guy:
- bit-banged 16MB DRAM
- bit-banged SPI Flash
- wrote an emulator for a 32Bit ARM & MMU
Apparently it takes 4h to but Ubuntu.
For a ROM chip you actually had to be careful so that it actually generated the correct output for a given address, unless you were willing to burn an EPROM with the reverse transformation applied.
When you do a suspend-to-ram on a current x86 machine, it has to save the "scrambler seed" to CMOS so that it can decode the data it left stored in RAM.
I think this also helps mitigate the attack where the DRAM is chilled to make its contents less volatile, the machine is powered off, and the DRAM is then dumped in search of sensitive material.
Other RAMs/Flash with different interfaces (e.g. SPI) require a prefix command to be sent over the wire, so it's easier for them to implement things like chip id commands.