- El microcontrolador dentro de un cargador de pared USB-C moderno ha crecido tanto en reloj, memoria y almacenamiento que puede compararse con la Apollo 11 Guidance Computer de 1969
- El CYPD4225 del Anker PowerPort Atom PD 2 tiene un ARM Cortex-M0 de 48 MHz, 128 KB de Flash y 8 KB de RAM; según los cálculos, es aproximadamente 563 veces más rápido que la AGC en la mayoría de las instrucciones
- La capacidad de almacenamiento varía según cómo se suponga la codificación de instrucciones, y el CYPD4225 puede contener entre 1.19 y 1.78 veces más instrucciones que la AGC
- En el Apollo 11 había 4 computadoras en total, incluidas 2 AGC, 1 LVDC y 1 AGS, y si no se cambia mucho el diseño original, es difícil reemplazarlas todas con un solo chip de cargador
- Solo por rendimiento de cálculo, parecería que 4 cargadores Anker podrían igualar el cómputo del Apollo 11, pero siguen existiendo restricciones aparte como la certificación para ambiente espacial, los periféricos, los niveles de voltaje y la lógica de triple redundancia del LVDC
Objetos de comparación y especificaciones básicas
- La comparación es entre la Apollo 11 Guidance Computer y 3 cargadores USB-C recientes
- Google Pixel 18W Charger: Weltrend WT6630P, 10 MHz, 512 bytes de RAM, 8 KB de almacenamiento
- Huawei 40W SuperCharge: Richtek RT7205, 22.7 MHz, “0.75 kB” de RAM, 24 KB de almacenamiento
- Anker PowerPort Atom PD 2: Cypress CYPD4225, 48 MHz, 8 KB de RAM, 128 KB de Flash
- Apollo 11 Guidance Computer: basada en componentes discretos, 1.024 MHz, 2,048 palabras de 15 bits de RAM, 36,864 palabras de 15 bits de almacenamiento de programa
- La AGC apoyó la mayor parte del vuelo lunar del CSM, el alunizaje y despegue del LEM, y el regreso del CSM a la Tierra
- La CPU más potente de la tabla es el CYPD4225 del Anker PowerPort Atom PD 2
- Su reloj es aproximadamente 48 veces mayor que el de la AGC
- Su almacenamiento de programa es aproximadamente 1.8 veces mayor
Comparación de velocidad de ejecución de instrucciones
- La AGC usa un reloj maestro de 1.024 MHz, y una sola instrucción requiere al menos 12 ciclos de reloj
- Las operaciones enteras usan complemento a uno (one's complement)
- No tiene punto flotante
- Para operaciones aritméticas usa un único registro acumulador
- El CYPD4225 incluye una CPU ARM Cortex-M0
- Tanto la AGC como el Cortex-M0 carecen de caché, tienen tiempos de acceso a memoria constantes y ejecutan instrucciones en orden
- Ninguno de los dos tiene punto flotante por hardware ni hardware vectorial o matricial como AVX, SSE o NEON
- Al comparar los ciclos de instrucciones parecidas, el Cortex-M0 sale muy favorecido
- Suma/resta de 15 bits: AGC 24 ciclos, Cortex-M0 1 ciclo
- Suma/resta de 31 bits: AGC 36 ciclos, Cortex-M0 1 ciclo
- Multiplicación: AGC 36 ciclos, Cortex-M0 1 ciclo
- Salto si es 0: AGC 24 ciclos, Cortex-M0 1 a 4 ciclos sin
CMP, 2 a 5 ciclos conCMP - Almacenamiento/carga en memoria: AGC 24 ciclos, Cortex-M0 2 ciclos
- La mayoría de las instrucciones de la AGC usan aproximadamente 12 veces más ciclos de reloj que el Cortex-M0, y el Cortex-M0 funciona a 48 MHz
- La fórmula es
12 * 48MHz / 1.024MHz - Con ese criterio, la CPU del cargador USB-C Anker PowerPort Atom PD 2 es 563 veces más rápida que la AGC en la mayoría de las aplicaciones
- La fórmula es
- La instrucción en la que el Cortex-M0 se queda claramente atrás frente a la AGC es la división
- La división en la AGC toma 72 ciclos, unos 70.3 µs
- En ese mismo tiempo, el CYPD4225 puede ejecutar unas 3,374 instrucciones aritméticas
- Como el costo de salto es de unos 3 ciclos, hay margen para implementar división por software
Almacenamiento de programa y codificación de instrucciones
- Los programadores del Apollo escribieron una máquina virtual/intérprete por la falta de almacenamiento en la Guidance Computer
- La restricción de espacio era tan severa que sacrificaban velocidad para ahorrar almacenamiento
- La AGC almacena 36,864 palabras de 15 bits, y el CYPD4225 tiene 128 KB de Flash como almacenamiento de programa
- Solo por cantidad de información, el CYPD4225 puede almacenar 1.90 veces más información que la AGC
- Las instrucciones de la AGC tienen ancho fijo de 15 bits
- El Cortex-M0 implementa el conjunto de instrucciones THUMB2 y usa instrucciones de 16 y 32 bits
- Las instrucciones de 16 bits cubren la mayoría de las tareas comunes como aritmética, saltos y carga/almacenamiento
- Si se supone de forma simple que todas las instrucciones son de 16 bits, el CYPD4225 puede almacenar 65,536 instrucciones
- Eso es hasta 1.78 veces las 36,864 instrucciones de la AGC
- Bajo una suposición más extrema de mitad 16 bits y mitad 32 bits, puede almacenar un total de 43,690 instrucciones
- Eso equivale a 1.19 veces la AGC
- La comparación de densidad de instrucciones no es simple
- El Cortex-M0 tiene 12 registros de propósito general donde puede guardar resultados aritméticos
- La AGC usa un solo acumulador, pero puede guardar resultados aritméticos directamente en ubicaciones de memoria
- El Cortex-M0 necesita una instrucción
storeaparte - El cambio de banco de la AGC permite codificar directamente más direcciones de memoria en las instrucciones aritméticas
- El Cortex-M0 tiene una memoria más simple y no necesita cambio de banco
- Se considera que el CYPD4225 puede alojar entre 1.19 y 1.78 veces más instrucciones, por lo que probablemente podría contener programas equivalentes a los de la AGC
- Los otros cargadores USB-C tienen menos capacidad de programa que la AGC
- Con 8 KB, parece difícil llegar a la Luna
- La AGC también fue diseñada originalmente con un almacenamiento de programa más pequeño, pero hubo que ampliarlo
- Por eso, las otras CPU de cargadores quedan descartadas como candidatas para llegar a la Luna
Comparación de RAM
- La AGC puede almacenar 2,048 palabras de 15 bits
- El CYPD4225 tiene 8 KB de RAM
- Medido en bytes, tiene un poco más del doble de RAM que la AGC
- La AGC calculaba principalmente en palabras de 15 bits
- El cálculo equivalente en Cortex-M0 se hace en palabras de 16 bits
- En unidad de cálculo, el CYPD4225 tiene 4,096 palabras de 16 bits y la AGC 2,048 palabras de 15 bits, así que es exactamente el doble
Computadoras totales del Apollo 11 y cuántos cargadores harían falta
- Según Wikipedia, la nave del Apollo 11 tenía 4 computadoras
- 2 AGC: 1 en el LEM y 1 en el CSM
- 1 Saturn Launch Vehicle Digital Computer
- 1 Apollo Abort Guidance System
- Como las 4 computadoras estaban en distintas partes de la nave, es difícil reemplazarlas todas con un solo CYPD4225
- Bajo la condición de no cambiar mucho el diseño del Apollo 11, se asume que hacen falta 4 computadoras
- Cada una de las computadoras del Apollo 11 mostradas en la tabla tiene menor rendimiento y memoria que el Anker PowerPort Atom PD 2
- AGC: 1.024 MHz, 2,048 palabras de 15 bits de RAM, 36,864 palabras de 15 bits de almacenamiento de programa
- LVDC: 2.048 MHz, 4,096 palabras de 13 bits de RAM, 32,768 palabras de 13 bits de almacenamiento de programa
- AGS: 1.024 MHz, 2,048 palabras de 18 bits de RAM, 2,048 palabras de 18 bits de almacenamiento de programa
- Se asume que el LVDC y el AGS no usan instrucciones peculiares que sean difíciles de ejecutar en un Cortex-M0
- La división podría tardar más que la multiplicación
- El CYPD4225 puede ejecutar miles de instrucciones aritméticas en el tiempo en que cualquiera de las computadoras del Apollo 11 realiza una sola multiplicación
- Viéndolo solo por rendimiento de cálculo, con 4 cargadores USB-C Anker PowerPort Atom PD 2 se podría llegar a la Luna
Restricciones restantes y puntos debatibles
- El CYPD4225 no es un componente con certificación espacial
- No se sabe si funcionaría en el espacio
- No se revisaron por separado los periféricos que usaban las computadoras del Apollo 11
- El CYPD4225 tiene 30 señales GPIO y soporta UART, I2C y SPI
- Hace falta verificar si la AGC soportaba 100 periféricos, 10 o más
- Los niveles de voltaje de los años 60 podrían ser demasiado altos para conectarlos directamente al CYPD4225
- El LVDC en realidad incluye lógica de triple redundancia
- La lógica produce 3 respuestas y un mecanismo de votación elige la ganadora
- Para compararlo con el LVDC, podría decirse que hacen falta 3 cargadores USB-C
- Esta redundancia existe por confiabilidad, y en el cálculo general se ignora la confiabilidad
- Incluso si se imitara este método con 3 microcontroladores y un cuarto microcontrolador para votar, no se considera que la confiabilidad total del sistema aumentaría
- Este punto puede ser debatible
La complejidad creada por el suministro de energía USB-C
- Hacia 2012~2013, el firmware de Structure Sensor usaba la detección de cargador USB presente en la mayoría de los cargadores USB de ese momento
- Era un método de red de resistencias entre las señales USB D+ / D-
- No había comunicación digital
- Se recuerda que implementar el firmware era fácil
- En 2020, con la masificación de USB-C, muchos cargadores USB incluyen un microcontrolador con CPU
- Algunos son menos potentes que la AGC
- Algunos son más potentes que la AGC
- La mayoría tiene al menos una velocidad de reloj unas 10 veces mayor
- USB-C Power Delivery resuelve problemas y ofrece nuevas funciones, pero también aumenta la complejidad
- Añade otro firmware y otro chip que hay que manejar durante la fabricación
- No ofrece una alternativa que use 1 hilo del cable y permita que el cargador USB-C presente corriente y voltaje de carga arbitrarios
1 comentarios
Opiniones de Hacker News
Las computadoras analógicas también merecen el reconocimiento que les corresponde. En la nave del Apollo 11 había una computadora más: la FCC (Flight Control Computer), una computadora analógica que controlaba los cardanes del cohete en el Saturn V.
Era un dispositivo cilíndrico de 2 pies y pesaba casi 100 libras.
Ambas terminaron teniendo el mismo nombre porque originalmente fueron creadas para reemplazar a las personas que hacían cálculos con calculadoras mecánicas de escritorio, es decir, el trabajo de los llamados “computadores”.
Una “computadora” de control de vuelo se parece más a un módulo de sintetizador analógico que a una Cray-1, una AGC, un Arduino, una laptop o un cargador. Los dispositivos digitales de la comparación son tan parecidos entre sí que casi no se distinguen.
“La Flight Control Computer (FCC) era un dispositivo completamente analógico de procesamiento de señales, y gestionaba la redundancia interna y la selección de bancos de filtros usando relés controlados por la Saturn V Switch Selector Unit. La FCC tenía múltiples rutas redundantes de procesamiento de señales en configuración triple y podía cambiar a un canal en espera si fallaba la comparación del canal principal. La computadora de control de vuelo implementaba la retroalimentación proporcional-derivativa básica para el control vectorial de empuje durante el vuelo propulsado, e incluía lógica de plano de fase para el control del sistema de propulsión auxiliar (APS) del S-IVB.”
“En vuelo propulsado, la FCC implementaba la ley de control $ \beta_c = a_0 H_0(s) \theta_e + a_1 H_1(s) \dot{\theta} $. Aquí, $ a_0 $ y $ a_1 $ son ganancias proporcional y derivativa, y $ H_0(s) $ es la función de transferencia en tiempo continuo del filtro de flexión estructural del canal de actitud y tasa de cambio de actitud. En la configuración del Saturn V, las ganancias $ a_0 $ y $ a_1 $ no variaban según un cronograma, y había conmutación discreta de ganancia. La FCC del Saturn V también implementaba una función electrónica de inclinación del vector de empuje mediante un generador de rampa; desde 20 segundos después del despegue, vectorizaba los motores S-IC aproximadamente 2 grados hacia afuera para mitigar la sensibilidad a desalineaciones del vector de empuje.”
https://ntrs.nasa.gov/api/citations/20200002830/downloads/20...
[1] https://imgur.com/qscoWrR
[2] https://imgur.com/HHg5ohS
¿Quién dijo que las mujeres no pueden con las matemáticas?
https://www.smithsonianmag.com/science-nature/history-human-...
Ya me cansan un poco los artículos sensacionalistas del tipo “comparación entre el equipo que aterrizó en la Luna y el hardware actual”. El primer avión no tenía ningún tipo de computadora, así que la capacidad de cálculo no es el único factor que determina el rendimiento y el éxito de estas cosas.
El software y el hardware de las misiones Apollo estaban muy bien diseñados. Todos sabemos que desde entonces la capacidad de cálculo se volvió absurdamente más potente, pero eso no significa que hoy sea fácil hacer lo mismo. Un mejor rendimiento no elimina la necesidad de buena ingeniería. Sin embargo, parece que algunos se apoyan mucho en esa premisa.
Lo más interesante es comparar lo compleja que se volvió la tecnología a la que no le prestamos atención. No es un dispositivo inteligente ni un reloj digital de los 80: es literalmente un cable que contiene tanta tecnología como el Apollo 11, y aun así ni nos damos cuenta.
Por ponerme del lado del contraargumento: una de las razones por las que ir a la Luna es más difícil que cargar un dispositivo USB es que en los vuelos espaciales no hay componentes listos para usar. Si cada vez que cargaras tu celular tuvieras que fabricar un cargador USB desde cero, e incluso definir por primera vez la especificación USB, el cable USB pronto también sería considerado un problema difícil.
El mensaje principal que hay que sacar de estos artículos no es que Apollo 11 no haya sido un logro enorme de ingeniería. Es que en nuestra vida cotidiana hay una cantidad inmensa de ingeniería producida en masa y casi invisible.
Si esos ingenieros viajaran en el tiempo hasta hoy, seguramente aprenderían el nuevo hardware sin problemas. Seguimos siendo los mismos humanos y usamos el mismo cerebro humano.
¿Eso de que “la capacidad de cálculo no es el único factor determinante” también aplica a la tarea de cargar un celular?
Me pregunto si el cálculo de peso y costo ya habrá mejorado lo suficiente como para que sea más barato blindar todo el procesador que hacer que el circuito en sí sea tolerante a la radiación. Los circuitos tolerantes a la radiación son mucho más caros porque dificultan usar componentes comerciales y limitan el uso de tecnología de punta.
Si mal no recuerdo, era una de las áreas que se estaban explorando con el dron de Marte, aunque no sé bien si las preocupaciones por radiación en la superficie de Marte son distintas de las de los usos en el espacio.
“El software de vuelo está escrito en C/C++ y se ejecuta en un entorno x86. Para cada cálculo/decisión, la ‘flight string’ compara los resultados de dos núcleos. Si hay una discrepancia, esa string se considera defectuosa y no envía comandos. Si ambos núcleos devuelven la misma respuesta, la string envía comandos a varios microcontroladores del cohete que controlan cosas como los motores y las aletas de rejilla”.
https://space.stackexchange.com/a/9446/53026
La sonda Galileo usó una placa de tungsteno para proteger el procesador del receptor de retransmisión de la sonda, y el instrumento de plasma de Galileo usó blindaje de tantalio. Justo estaba investigando sobre blindaje contra radiación.
Casi todos los chips USB, si uno mira la hoja de datos, tienen una CPU totalmente programable. Para un HID simple o un cargador puede parecer algo ridículo, pero un microcontrolador básico es barato y en la práctica reduce costos frente a un ASIC.
La frase “el LVDC en realidad tiene lógica triple redundante” es un detalle muy menor, pero que haya tres de algo no significa que sea redundancia triple. Según el criterio de redundancia, tres implica redundancia doble; dos, redundancia simple; y uno, ninguna redundancia.
A menos que el mecanismo de votación pueda, somehow, producir la respuesta correcta incluso cuando las tres implementaciones den respuestas distintas entre sí, no veo cómo se puede considerar redundancia triple. ¿El propio mecanismo de votación cuenta funcionalmente como una cuarta implementación?
Como el LVDC es una computadora serial y solo tiene que manejar un bit a la vez, la implementación de la votación es más simple.
El LVDC era un diseño de alta redundancia que no debía fallar, mientras que el AGC no tenía redundancia, pero estaba diseñado para recuperarse rápidamente cuando ocurría una falla.
Me pregunto si hay alguna forma de saber, sin desarmarlos, exactamente qué hardware usan los dispositivos pequeños que normalmente no se consideran computadoras, como los cargadores de smartphones.
¿Existen hojas de datos especiales o documentos de certificación gubernamental? Siempre me atrajo el hardware de especificaciones mínimas que hace funcionar la electrónica cotidiana, así que me gustaría saber de dónde sacó esa información el autor.
Incluso los teclados viejos de la década de 1970 tenían CPU totalmente programables, por lo general alguna variante de Intel MCS-48 https://en.wikipedia.org/wiki/Intel_MCS-48#Uses
Hoy esto es aún más cierto. Los teclados, trackpads, mouse, todos los dispositivos USB, etc., tienen CPU totalmente programables.
Que la CPU del Anker PowerPort Atom PD 2 USB-C Wall Charger sea 563 veces más rápida que la Apollo 11 Guidance Computer me sorprende: pensar que, si programara el objeto que carga mis dispositivos, quizá también podría haber enviado gente a la Luna.
Muchos ingenieros en tierra no tenían computadora, y lo que usaban los afortunados no eran equipos personales, sino mainframes.
Las computadoras eran tan valiosas que solo se usaban para trabajos que realmente las necesitaban, especialmente cuando importaba la precisión o la velocidad de los cálculos.
Eso muestra qué pasa cuando a gente que ya hacía bien la industria aeroespacial con reglas de cálculo se le dan recursos de nivel mainframe.
Todos los alunizajes fueron fly-by-wire: el piloto tenía los controles y el software controlaba los propulsores.
https://www.quora.com/Could-the-Apollo-Guidance-Computer-hav...:
“P64. A unos 7,000 pies de altitud, en el punto llamado ‘high gate’, la computadora cambiaba automáticamente a P64. La computadora seguía realizando todo el vuelo y guiaba el LM hacia el objetivo de alunizaje. Sin embargo, el Commander podía ver el sitio de alunizaje y, si no le gustaba, elegir otro objetivo; la computadora modificaba la trayectoria y lo guiaba hacia ese objetivo.
En ese punto se usaba uno de tres programas para completar el alunizaje.
P66. Es el programa que se usó realmente en los seis alunizajes. A unos cientos de pies sobre la superficie, el Commander indicaba a la computadora que cambiara a P66. A menudo se conoce como ‘modo manual’, pero en realidad no era completamente manual. En este modo, el Commander pilotaba el LM diciéndole a la computadora qué maniobras quería, y la computadora las ejecutaba. Esto continuaba hasta el alunizaje.
P65. Este es el modo automático por el que preguntas. Si la computadora permanecía en P64 hasta unos 150 pies de altura, cambiaba automáticamente a P65, y P65 llevaba el LM hasta la superficie bajo control de la computadora. El problema era que la computadora no tenía forma de detectar obstáculos ni de juzgar qué tan plano era el sitio de alunizaje previsto. En todos los vuelos, el Commander quería elegir un punto distinto del que la computadora lo estaba llevando, así que cambiaba a P66 antes de que la computadora pasara automáticamente a P65. [Actualización: en vuelos posteriores, el código de P65 fue eliminado del AGC. Los programadores necesitaban memoria para otro código, y el AGC tenía una memoria tan limitada que, para agregar código en un lugar, había que quitar algo de otro. Para ese momento estaba claro que ninguna tripulación usaría el modo de alunizaje automático, así que se eliminó P65.]
P67. Este sí es el verdadero modo completamente manual. En P66, aunque el piloto controla, la computadora sigue dentro del circuito. En P67, la computadora queda completamente desconectada. Sigue proporcionando datos como altitud y velocidad de descenso, pero no controla el vehículo.”
Dentro de 50 años, el equivalente actual a un clúster de entrenamiento de GPT-4 de un centro de datos estará dentro de un cable barato y funcionará más de 100 veces más rápido que todo el clúster de hoy.
Si asumimos que entrenar GPT-4 tomó unos 100 días, eso significa que, dentro de 50 años, un dispositivo común de nivel teléfono podrá entrenar desde cero un modelo de nivel GPT-4 en menos de un segundo.
No sabía que solo el LVDC tenía lógica de triple redundancia.
La frase “imitar este esquema de votación con tres microcontroladores y un cuarto controlador para el conteo de votos no aumenta la confiabilidad del sistema” es suficientemente clara. Es porque el contador de votos se convierte en un punto único de falla.
No estoy seguro de cómo Tandem y Stratus manejaban las discrepancias entre dos procesadores. Stratus usaba un par de procesadores OTC 68K, pero eso no parece implicar votación. Si solo hay dos votantes, no veo cómo se puede resolver una discrepancia.
No se ve claro cómo construir, con chips de CPU comerciales, un procesador “confiable” basado en votación. Parecería que cada CPU tendría que observar las salidas de las otras dos y dejar de votar por sí misma si pierde la votación, pero eso suena a hardware de CPU personalizado.
El hardware externo que compara los votos, le informa a la CPU que deje de votar y enruta la salida ganadora termina siendo el contador de votos, y eso es un punto único de falla. También podrías poner tres contadores de votos para que se vigilen entre sí, pero entonces necesitarías un contador de contadores de votos. De ahí para abajo son tortugas infinitas.
En general, hacer que varias CPU voten para aumentar la confiabilidad parece riesgoso, porque incrementa la complejidad y podría terminar reduciendo la confiabilidad.
Tal vez construir un procesador confiable, al final, signifique construir un procesador en el que se pueda confiar.
Es una lástima que el enlace a la biografía de Jonny Kim esté roto. El enlace que funciona es https://www.nasa.gov/people/jonny-kim/.
Debe de ser una de las personas más impresionantes de la historia. Tiene varios logros: Navy SEAL condecorado, médico de Harvard, astronauta, entre otros. Suena como si un niño hubiera armado el G.I. Joe definitivo.