Apollo 11 Guidance Computer (AGC) vs USB-C Chargers

I think it is healthy to compare historical and modern computing. Let's see how the CPUs contained in recent USB-C wall chargers compare to the power of the Apollo 11 Guidance Computer (AGC). The Apollo 11 spacecraft carried 3 humans to the moon and back in 1969.

Device Google Pixel 18W Charger Huawei 40W SuperCharge Anker PowerPort Atom PD 2 Apollo 11 Moon Landing Guidance Computer (AGC) Function Charges a phone Charges a phone or maybe a laptop Charges 2 phones or maybe laptops Fly most-of-the-way to moon ( CSM )

) Land on moon ( LEM )

) Take off from moon ( LEM )

) Fly back to Earth ( CSM ) Microchip(s) Weltrend WT6630P Richtek RT7205 Cypress CYPD4225 Discrete components Clock Speed 10 MHz 22.7 MHz 48 MHz 1.024 MHz RAM 512 bytes "0.75kB" 8KB 2048 15-bit words / 4KB if you include the parity bit in each word Program Storage Space 8KB 24KB (Mask ROM + OTP) 128KB Flash 36,864 15-bit words / 72KB if you include the parity bit in each word Instruction Set Intel 8051 (8-bit) Unknown ARM Cortex-M0 32-bit implementing ARMv6-M 16-bit accumulator based Sources ChargerLabs Teardown WT6630P Datasheet ChargerLabs Teardown RT2705 Datasheet ChargerLabs Teardown CYPD4225 Datasheet CPU description Memory Functional overview

Interpretation

Speed

The Apollo 11 Guidance Computer has a master clock frequency of 1.024MHz. Instructions need at least 12 clock cycles (11.72uS). It operates using one's compliment integer arithmetic. There is no floating point. There is a single accumulator register to perform arithmetic.

The Anker PowerPort Atom PD 2 uses a CYPD4225, containing an ARM Cortex-M0 CPU. Luckily for this analysis both the Apollo 11 Guidance Computer and the Cortex-M0 CPUs are very predictable compared to more sophisticated modern CPUs. They have no cache and memory access happens at a constant speed. Instructions execute in-order. They have no hardware floating point. They have no vector/matrix hardware (like AVX, SSE, or NEON). Therefore we can learn a lot by just comparing the cycles of roughly equivalent instructions.

Instruction Apollo 11 Guidance Computer Cycles ARM Cortex-M0 Cycles 15-bit Addition and Subtraction 24 (2 * 12) 1 31 Bit Addition and Subtraction 36 (3 * 12) 1 Multiply 36 (3 * 12) 1 - see datasheet Divide 72 (6 * 12) Not Available Branch if zero 24 (2 * 12) 1-4 without CMP, 2-5 with CMP CCS (Count Compare Skip) / CMP 24 (2 * 12) 1 Store accumulator/register to memory (XHC / STR) 24 (2 * 12) 2 Load memory to accumulator/register (XHC / LD) 24 (2 * 12) 2

After skimming though the Apollo 11 Guidance Computer instruction set, the only important missing Cortex-M0 instruction seems to be division. But each division on the Apollo 11 Guidance Computer takes 72 cycles * (1/1.024MHz) = 70.3 uS. In 70.3uS the CYPD4225 can execute 70.3uS * 48 MHz = 3374 arithmetic instructions. Branches are not too expensive (3 cycles). Hopefully that is enough to implement software division.

Memory

Program Storage Space

This is worth looking at. The Apollo programmers wrote a virtual machine/interpreter for the Guidance Computer because they were struggling with program space. It mattered enough to them to trade speed for increased storage.

The Apollo 11 Guidance Computer stores 36,864 15-bit words. The CYPD4225 stores 128KB in flash. It's easy to calculate that the CYPD4225 can store 1.90 times more information than a Apollo 11 Guidance Computer.

But does one computer have an advantage in instruction encoding? The Apollo 11 Guidance Computer instructions are 15-bit fixed width instructions. The Cortex-M0 implements the THUMB2 instruction set which has 16-bit instructions and 32-bit instructions. The 16-bit instructions cover most common operations, such as arithmetic, branching, load/store. So it seems most programs can be encoded in mostly 16-bit instructions. How many instructions can a CYPD4225 store? 128KB / 16-bits = 65,536 instructions. The Apollo 11 Guidance computer can store 36,864 instructions. Naively, the Anker PowerPort Atom PD2 can store at most 1.78x more instructions than the Apollo 11 Guidance Computer.

The THUMB2 instruction set used by the Cortex-M0 is designed to be compact. The Cortex-M0 has 12 general purpose registers which can hold arithmetic results compared the single accumulator on the Apollo 11 Guidance Computer. The Apollo 11 Guidance Computer has the advantage that it can do arithmetic and store the result directly to a memory location while the Cortex-M0 requires a separate store instruction. The Cortex-M0 has the advantage that the memory is simpler and requires no bank switching. But the bank switching means that more memory addresses can be encoded directly into arithmetic instructions. This is not straightforward to compare. However, given that the CYPD4225 can hold 1.19x - 1.78x the instructions, I claim that the CYPD4225 should be able to hold an equivalent Apollo 11 Guidance Computer program.

Notice that other USB-C chargers have less program capacity than the Apollo 11 Guidance Computer. Going to the moon on 8KB sounds hard. The Apollo 11 Guidance Computer was originally designed with less program storage space but it had to be increased - conditions were not cozy. Therefore, I will not consider other USB-C charger CPUs as candidates for taking me to the moon.

Random Access Memory

The Apollo 11 Guidance Computer can store 2,048 15-bit words. The CYPD4225 has 8KB of RAM. The Anker PowerPort Atom PD2 has a little over twice the RAM of the Apollo 11 Guidance Computer. One caveat is that the Apollo 11 Guidance Computer mostly computes in terms of 15-bit words. The equivalent Cortex-M0 computations are done in 16-bit words. So in terms of equivalent computational units the CYPD4225 has 4,096 16-bit words vs the Apollo 11 Guidance Computer's 2,048 15-bit words. So exactly twice the words.

To The Moon and Back

2x Apollo 11 Guidance Computers (examined above). One in the LEM and one in the CSM.

1x Saturn Launch Vehicle Digital Computer (LVDC)

1x Abort Guidance System (AGS)

Is there a possibility that we can replace multiple computers with a single CYPD4225? I don't think so because the 4 computers were in separate parts of the spacecraft. So we will assume that we need 4 computers to fly an Apollo 11 without significantly altering the design.

All the computers on Apollo 11 are less powerful and have less memory than an Anker PowerPort Atom PD 2. I'm going to assume that the LVDC and the AGS do not use any exciting instructions that would be difficult for a Cortex-M0 to perform - besides division. I will hand-wave this away by saying that division probably takes longer than multiplication. And I have listed the multiplication times above. The CYPD4225 can comfortably execute thousands of arithmetic instructions in the time it takes any Apollo 11 computer to execute a single multiply.

I claim that we would only need the compute power of 4 Anker PowerPort Atom PD 2 USB-C chargers to get to the moon with the following caveats:

The CYPD4225 is definitely not rated for space. I have no idea if it would work in space.

I did not examine the peripherals used by the Apollo 11 computers. The CYPD4225 has 30 GPIO signals and talks UART, I2C, and SPI. However, how many peripherals did the Apollo 11 Guidance Computer support? 100? 10? More Googling is needed. And probably the voltage levels from the 1960s are too high to connect to a CYPD4225.

Ron Burkey, Owen Smith, and others point out that the LVDC actually contains triply-redundant logic. The logic gives 3 answers and the voting mechanism picks the winner. So it may be fair to claim that you in fact need 3 USB-C chargers to compare against the LVDC. However, I think the redundancy was for reliability and I completely ignoring reliability. And in fact I think any attempt to emulate this voting scheme with 3x microcontrollers with a 4th to tally votes will not make the system any more reliable. But this is proving controversial and it may soon get its own full paragraph summarizing different viewpoints!

What does it mean?

Uses 1 wire in the cable

Lets USB-C chargers present arbitrary charge current and voltages

Last updated 2020-02-06. Did I miss something obvious? Is the Anker PowerPort Atom PD 2 not going to cut it? forrest@forrestheller.com

Thanks my father for looking at this. And thanks to Ron Burkey who looked at a small piece of info I emailed and provided more context. Thanks to Sean Barrett for the correction that Cortex-M0s are pipelined.