Back in the days when I worked on the Atari ST, the hardware engineers were proud of their insight into the behavior of DRAM chips. “Most designers treat them as digital devices, we treat them as analog devices.” Thus squeezing a few, maybe a couple tens of nanoseconds of cycle time out of them. You know, for performance. The competition didn’t seem to have the same insight into the analog cheating that Atari was doing, and shipped slower systems. [Ultimately it didn’t matter, and Atari flopped again].
Most CS texts treat ones and zeros as your basic, cute onsies and zerozies, too simple for much more discussion, onward to higher abstractions! The horrible, analog truth of what happens inside memory chips and over modern, fast busses would send Lovecraftian shivers of horror down the spines of software undergrads, namely that those comfortable, stable onezies and zorches are anything but nice and well-behaved down there. The strategies for dealing with noise on DRAM chips are astoundingly disturbing, and I last read about those maybe ten years ago. Things have gotten much more frugly since then.
Here’s an amusing FAQ on the bringup of the various busses and so forth on the PowerPC 970. My favorite quote follows several pages of quite horrifying instructions on tuning and seeming blind mucking about with timing and voltage parameters until things appear to work –
“Once all of the above is completed . . . [you will be] effectively at the same point you would have been 5 months ago, had this been a standard 750 bringup. [Things] from this point should be very straightforward and follow established methods.”
Link. It’s all analog down there, and getting more analog with each generation of hardware.