In 2013, a Super Mario 64 speedrunner was able to shave precious seconds from his 70-star speedrun when a cosmic ray struck his computer’s memory, changing Mario’s height value from C5837800 to C4837800, warping Mario up through the level. This is an example of a single-event upset (SEU), a change of state caused by an ionizing particle striking a sensitive micro-electronic component. Studies by IBM in the 1990s found that computers experience approximately one cosmic ray error per 256 megabytes of RAM per month. Based on this calculation, the computer I’m currently using with 16 GB of RAM will experience 64 SEU bit flips this month. The Nintendo 64, on the other hand, with its tiny 4 MB of RAM, would need over 5 years (64 months) before it encountered a SEU event.

Outside the protection of Earth’s atmosphere, radiation (including cosmic rays) is more common. Spacecraft must be specifically designed and hardened for their exposure to radiation. Techniques such as modular redundancy (reading inputs from multiple confirming subsystems) and error correction codes (ECCs) (parity bits) are used to protect the electronic components.

NASA used another approach when designing the Apollo Guidance Computer (AGC) for the Apollo and Gemini missions of the 1960s and 1970s: Core Rope Memory. Programs were stored in ferrite cores connected by wire. Due to the size of the components used, it would not be possible for an ionizing particle to flip a bit. Cosmic radiation alone cannot burn out a wire or change the magnetism of a core.

AGC Core Rope Memory
(Image from here)

The core rope memory was woven by women by hand in a process that took 3 months. A great description can be found here. Core rope memory had a storage density of 72 KB per cubic foot (or 2.5 MB per cubic meter). Which is much larger than the magnetic-core RAM at 4 KB per cubic foot (or 140 KB per cubic meter).

Core Rope Memory Weaving
(Image from here)

Core rope memory is so resilient that program data is still intact in these modules today. (Compare that with other digital media formats.) CuriousMarc has a video showing the process Mike Stewart is using to read core rope memory modules using modern hardware. There’s a great story at this timestamp where Mike explains the process that was used to fix a bug in the Apollo 11 program code one month prior to launch. You can find CuriousMarc’s full series on the restoration of the Apollo Guidance Computer and progress towards retrieving as many of the programs as possible here. Fascinating stuff.

I’ll also take this opportunity to call out the great write-up Arstechnica did on the Apollo Guidance Computer back in 2020. It’s easy to dismiss the AGC given its tiny memory size and its horsepower being on the level of a modern calculator. But the AGC had many capabilities that we think of as quite modern, such as multi-tasking, interpreter-driven virtual machines, and remote data updates. I dare say modern developers wouldn’t know where to begin in order to fit these features into such a limited memory footprint. The Arstechnica article also details some accounts of how the AGC handled errors, with its ability to pause and restart programs without losing its memory state being a key feature. Worth checking out.


<
Previous Post
Why Interfaces?
>
Next Post
Bit Rot