Thursday, June 27, 2019

Apollo 11 Computer System


Many people believe the computer systems of the Apollo 11 space craft are ancient and little can be learned from them. I disagree. The computer systems in the Apollo 11 were, in some regards, more advanced than the computers of the 1990s and early 2000s. There are a couple of things that lead me to that conclusion.
The first is that the computer on the both the Lunar module, “Luminary” and the command module, “Comanche” were networked wirelessly via radio frequency and also were in direct communication with the computer at the mission control, “Tranquility.” This was in July of 1969. We did not develop robust wireless networking technologies for another nearly three decades with the development of the 802.11 “Wi-Fi” protocols in 1997. Taking this a step further, even wired communication between computers was not standardized until four years later with the release of the 802.3 Ethernet standards. Needless to say the communications for the computing systems were decades ahead of their times.
The second major advancement in computers that was ahead of times was the processor itself. Though the system performed around 1000 times slower than a modern computer, it had some features that were not developed commercially in processors until the early 2000s. Among those features was the capability to run multiple threads. Threads are independent processes that can run at the same time; for example it was capable of tracking the exact location of the spacecraft using computer vision to determine the view angle of particular stars at the same time as it was calculating the firing thrust of the engines to properly align the craft for a safe landing. We did not have true multi-thread processor capabilities in home computers until around 2001 with the release of the first multi-core processor by Intel. You will also notice that I mentioned computer vision in the example. You might be surprised to realize that the computer in Luminary did live-image processing to determine the angle and location of the craft both for the lunar landing and the reentry angle to make it safely back to earth.
The third advanced feature of the computer in the Apollo spacecraft was the ability of the system to “self-heal.” During the mission, an unlikely set of circumstances caused the guidance computer to begin throwing alarms. These alarms were caused by the radar system that was tracking the module for recovery in the case of a mission abort. The program started using too much computing power at a critical phase in another thread that was helping to land the craft. The robust design of the system allowed the computer to make the decision to terminate the radar process and focus on landing the craft. Self-healing computer code and systems are still an advanced field of computer science.
I am fascinated by the excellent work done by the team at the Massachusetts Institute of Technology under the direction of Margaret Hamilton. The code was publicly released in July of 2016 and computer scientist all over the world got to see the human-ness shining through in the very complex code. There was a terrible habit of typing “WTIH” for “WITH” about 20 times in the code comments. The routine names in the code were fascinating and made it easy to picture the imaginations of the young engineers, sparked by being on the spacecraft, as they wrote code segments like “LUNAR_LANDING_GUIDANCE_EQUATIONS” and “BURN_BABY_BURN-MASTER_IGNITION_ROUTINE.” There was even apparently a problem in an early version of the code to leave extraneous data in DVTOTAL based on a comment block in the code that stated very clearly, “don’t forget to clean out leftover DVTOTAL data when GROUP 4 RESTARTS and then BURN, BABY!” It is difficult to figure out what DVTOTAL is from reading the code, but, very clearly, it is important to clear it before this routine. I am fairly certain that “BURN BABY!” means let’s get this rocket into space.
-->

No comments: