- Le microcontrôleur intégré à un chargeur mural USB-C moderne a désormais une fréquence d’horloge, une mémoire et un espace de stockage suffisamment élevés pour être comparé à l’Apollo 11 Guidance Computer de 1969
- Le CYPD4225 de l’Anker PowerPort Atom PD 2, avec son ARM Cortex-M0 à 48 MHz, ses 128 Ko de Flash et ses 8 Ko de RAM, serait, selon les calculs, environ 563 fois plus rapide que l’AGC pour l’exécution de la plupart des instructions
- L’espace de stockage varie selon les hypothèses d’encodage des instructions ; le CYPD4225 peut contenir environ 1,19 à 1,78 fois plus d’instructions que l’AGC
- Apollo 11 embarquait 4 ordinateurs, dont 2 AGC, 1 LVDC et 1 AGS ; sans modifier fortement la conception d’origine, il serait difficile de tous les remplacer par une seule puce de chargeur
- En seule puissance de calcul, 4 chargeurs Anker semblent pouvoir atteindre un niveau informatique comparable à celui d’Apollo 11, mais la qualification pour l’environnement spatial, les périphériques, les niveaux de tension et la logique à triple redondance du LVDC restent des contraintes distinctes
Objets comparés et caractéristiques de base
- La comparaison porte sur l’Apollo 11 Guidance Computer et trois chargeurs USB-C récents
- Google Pixel 18W Charger : Weltrend WT6630P, 10 MHz, 512 octets de RAM, 8 Ko de stockage
- Huawei 40W SuperCharge : Richtek RT7205, 22,7 MHz, « 0,75 Ko » de RAM, 24 Ko de stockage
- Anker PowerPort Atom PD 2 : Cypress CYPD4225, 48 MHz, 8 Ko de RAM, 128 Ko de Flash
- Apollo 11 Guidance Computer : basé sur des composants discrets, 1,024 MHz, 2 048 mots de RAM de 15 bits, 36 864 mots de stockage programme de 15 bits
- L’AGC a pris en charge la majeure partie du vol lunaire du CSM, l’alunissage et le décollage du LEM, ainsi que le retour du CSM vers la Terre
- Le CPU le plus puissant du tableau est le CYPD4225 de l’Anker PowerPort Atom PD 2
- Environ 48 fois la fréquence d’horloge de l’AGC
- Environ 1,8 fois l’espace de stockage programme
Comparaison de la vitesse d’exécution des instructions
- L’AGC utilise une horloge maître de 1,024 MHz, et une instruction nécessite au minimum 12 cycles d’horloge
- Les opérations entières utilisent le complément à un (one’s complement)
- Pas de virgule flottante
- Les opérations arithmétiques utilisent un unique registre accumulateur
- Le CYPD4225 contient un CPU ARM Cortex-M0
- L’AGC et le Cortex-M0 n’ont tous deux pas de cache, ont un temps d’accès mémoire constant et exécutent les instructions dans l’ordre
- Aucun des deux ne dispose de virgule flottante matérielle ni de matériel vectoriel/matriciel comme AVX, SSE ou NEON
- En comparant le nombre de cycles pour des instructions similaires, le Cortex-M0 est très avantagé
- Addition/soustraction sur 15 bits : AGC 24 cycles, Cortex-M0 1 cycle
- Addition/soustraction sur 31 bits : AGC 36 cycles, Cortex-M0 1 cycle
- Multiplication : AGC 36 cycles, Cortex-M0 1 cycle
- Branchement sur zéro : AGC 24 cycles, Cortex-M0 1 à 4 cycles sans CMP, 2 à 5 cycles avec CMP
- Stockage/chargement mémoire : AGC 24 cycles, Cortex-M0 2 cycles
- La plupart des instructions de l’AGC utilisent environ 12 fois plus de cycles d’horloge que celles du Cortex-M0, et le Cortex-M0 fonctionne à 48 MHz
- La formule est
12 * 48MHz / 1.024MHz - Sur cette base, le CPU du chargeur USB-C Anker PowerPort Atom PD 2 est 563 fois plus rapide que l’AGC dans la plupart des applications
- La formule est
- L’instruction qui manque le plus nettement au Cortex-M0 par rapport à l’AGC est la division
- La division de l’AGC prend 72 cycles, soit environ 70,3 µs
- Pendant ce même laps de temps, le CYPD4225 peut exécuter environ 3 374 instructions arithmétiques
- Le coût d’un branchement étant d’environ 3 cycles, il reste de la marge pour implémenter la division en logiciel
Stockage programme et encodage des instructions
- Les programmeurs d’Apollo ont écrit une machine virtuelle/un interpréteur à cause du manque d’espace de stockage du Guidance Computer
- La contrainte d’espace était suffisamment forte pour sacrifier de la vitesse afin d’économiser du stockage
- L’AGC stocke 36 864 mots de 15 bits, tandis que le CYPD4225 dispose de 128 Ko de Flash comme espace de stockage
- En simple quantité d’information, le CYPD4225 peut stocker 1,90 fois plus d’informations que l’AGC
- Les instructions de l’AGC sont des instructions de largeur fixe de 15 bits
- Le Cortex-M0 implémente le jeu d’instructions THUMB2, avec des instructions 16 bits et 32 bits
- Les instructions 16 bits couvrent la plupart des opérations courantes comme l’arithmétique, les branchements et les chargements/stockages
- En supposant simplement que toutes les instructions font 16 bits, le CYPD4225 peut stocker 65 536 instructions
- Soit au maximum 1,78 fois les 36 864 instructions de l’AGC
- Avec l’hypothèse plus extrême d’une moitié d’instructions 16 bits et d’une moitié d’instructions 32 bits, il peut stocker au total 43 690 instructions
- Soit 1,19 fois l’AGC
- Comparer la densité des instructions n’est pas simple
- Le Cortex-M0 dispose de 12 registres généraux pouvant contenir des résultats arithmétiques
- L’AGC utilise un seul accumulateur, mais peut stocker directement des résultats arithmétiques à des emplacements mémoire
- Le Cortex-M0 a besoin d’une instruction store séparée
- Le bank switching de l’AGC permet d’encoder directement davantage d’adresses mémoire dans les instructions arithmétiques
- La mémoire du Cortex-M0 est plus simple et ne nécessite pas de bank switching
- Le CYPD4225 peut contenir 1,19 à 1,78 fois plus d’instructions, ce qui laisse penser qu’il pourrait aussi accueillir un programme équivalent à celui de l’AGC
- Les autres chargeurs USB-C ont une capacité programme inférieure à celle de l’AGC
- Aller sur la Lune avec 8 Ko semble difficile
- L’AGC aussi avait été conçu à l’origine avec un espace de stockage programme plus petit, mais il a fallu l’augmenter
- Les CPU des autres chargeurs sont donc exclus des candidats pour aller jusqu’à la Lune
Comparaison de la RAM
- L’AGC peut stocker 2 048 mots de 15 bits
- Le CYPD4225 dispose de 8 Ko de RAM
- En octets, il possède un peu plus de 2 fois la RAM de l’AGC
- L’AGC calcule principalement par mots de 15 bits
- Les calculs équivalents du Cortex-M0 s’effectuent par mots de 16 bits
- En unités de calcul, le CYPD4225 dispose de 4 096 mots de 16 bits contre 2 048 mots de 15 bits pour l’AGC, soit exactement 2 fois plus
Ensemble des ordinateurs d’Apollo 11 et nombre de chargeurs nécessaires
- D’après Wikipedia, le vaisseau Apollo 11 embarquait 4 ordinateurs
- 2 AGC : 1 dans le LEM, 1 dans le CSM
- 1 Saturn Launch Vehicle Digital Computer
- 1 Apollo Abort Guidance System
- Les 4 ordinateurs se trouvaient dans des parties différentes du vaisseau, ce qui rend difficile leur remplacement par un seul CYPD4225
- En supposant de ne pas modifier fortement la conception d’Apollo 11, on considère que 4 ordinateurs sont nécessaires
- Chacun des ordinateurs d’Apollo 11 indiqués dans le tableau est inférieur à l’Anker PowerPort Atom PD 2 en performances et en mémoire
- AGC : 1,024 MHz, 2 048 mots de RAM de 15 bits, 36 864 mots de stockage programme de 15 bits
- LVDC : 2,048 MHz, 4 096 mots de RAM de 13 bits, 32 768 mots de stockage programme de 13 bits
- AGS : 1,024 MHz, 2 048 mots de RAM de 18 bits, 2 048 mots de stockage programme de 18 bits
- On suppose que le LVDC et l’AGS n’utilisent pas d’instructions particulières difficiles à exécuter sur Cortex-M0
- La division pourrait prendre plus de temps que la multiplication
- Le CYPD4225 peut exécuter des milliers d’instructions arithmétiques pendant le temps nécessaire à n’importe lequel des ordinateurs d’Apollo 11 pour effectuer une seule multiplication
- En ne considérant que la puissance de calcul, la capacité de traitement de 4 chargeurs USB-C Anker PowerPort Atom PD 2 suffirait pour aller sur la Lune
Contraintes restantes et points de débat
- Le CYPD4225 n’est pas un composant qualifié pour l’espace
- On ne sait pas s’il fonctionnerait dans l’espace
- Les périphériques utilisés par les ordinateurs d’Apollo 11 n’ont pas été examinés séparément
- Le CYPD4225 dispose de 30 signaux GPIO et prend en charge UART, I2C et SPI
- Il faudrait vérifier si l’AGC prenait en charge 100 périphériques, 10, ou davantage
- Les niveaux de tension des années 1960 sont probablement trop élevés pour être connectés directement au CYPD4225
- Le LVDC intègre en réalité une logique à triple redondance
- La logique produit trois réponses, et un mécanisme de vote choisit la gagnante
- On pourrait considérer qu’il faut 3 chargeurs USB-C pour le comparer au LVDC
- Cette redondance vise la fiabilité, et la fiabilité est ignorée dans le calcul global
- Même en imitant cette approche avec 3 microcontrôleurs et un 4e microcontrôleur pour le vote, on estime que la fiabilité du système n’en serait pas accrue
- Ce point peut prêter à débat
La complexité créée par l’alimentation USB-C
- Vers 2012-2013, le firmware du Structure Sensor utilisait la détection de chargeur USB présente dans la plupart des chargeurs USB de l’époque
- Il s’agissait d’un réseau de résistances entre les signaux USB D+ / D-, sans communication numérique
- D’après le souvenir de l’auteur, l’implémentation du firmware était simple
- En 2020, avec la généralisation de l’USB-C, beaucoup de chargeurs USB intègrent un microcontrôleur avec CPU
- Certains sont moins puissants que l’AGC
- Certains sont plus puissants que l’AGC
- La plupart ont une fréquence d’horloge au moins environ 10 fois supérieure
- L’USB-C Power Delivery résout des problèmes et apporte de nouvelles fonctionnalités, mais augmente aussi la complexité
- Il ajoute un firmware et une puce supplémentaires à gérer lors de la fabrication
- Il ne propose pas d’alternative utilisant un seul fil du câble et permettant à un chargeur USB-C d’annoncer des courants et tensions de charge arbitraires
1 commentaires
Avis de Hacker News
Les calculateurs analogiques méritent eux aussi d’être reconnus à leur juste valeur. Le vaisseau Apollo 11 avait un ordinateur de plus : le FCC (Flight Control Computer), un calculateur analogique qui contrôlait le cardan de la fusée sur la Saturn V.
C’était un dispositif cylindrique de 2 pieds, pesant près de 100 livres.
S’ils ont fini par porter le même nom, c’est parce qu’à l’origine tous deux ont été conçus pour remplacer les personnes qui effectuaient des calculs sur des calculatrices mécaniques de bureau, et qu’on appelait des “computers”.
Le “calculateur” de contrôle de vol ressemble davantage à un module de synthétiseur analogique qu’à un Cray-1, un AGC, un Arduino, un ordinateur portable ou un chargeur. Les appareils numériques comparés ici, eux, sont presque indiscernables les uns des autres tant ils se ressemblent.
“Le Flight Control Computer (FCC) était un dispositif de traitement du signal entièrement analogique ; il gérait la redondance interne et la sélection des banques de filtres au moyen de relais commandés par le Saturn V Switch Selector Unit. Le FCC comportait plusieurs chemins redondants de traitement du signal en configuration triple, et pouvait basculer vers un canal de secours en cas d’échec de la comparaison du canal principal. L’ordinateur de contrôle de vol implémentait une rétroaction proportionnelle-dérivée de base pour le contrôle vectoriel de poussée pendant le vol propulsé, et incluait aussi une logique en plan de phase pour le contrôle du système de propulsion auxiliaire (APS) du S-IVB.”
“En vol propulsé, le FCC implémentait la loi de commande $ \beta_c = a_0 H_0(s) \theta_e + a_1 H_1(s) \dot{\theta} $. Ici, $ a_0 $ et $ a_1 $ sont les gains proportionnel et dérivé, et $ H_0(s) $ est la fonction de transfert en temps continu du filtre de flexion structurelle du canal d’attitude et de vitesse d’attitude. Dans la configuration Saturn V, les gains $ a_0 $ et $ a_1 $ ne variaient pas selon un calendrier, et il existait des commutations de gain discrètes. Le FCC de la Saturn V implémentait aussi une fonction électronique d’inclinaison du vecteur de poussée à l’aide d’un générateur de rampe ; à partir de 20 secondes après le décollage, il vectorisait les moteurs S-IC d’environ 2 degrés vers l’extérieur afin d’atténuer la sensibilité aux désalignements du vecteur de poussée.”
https://ntrs.nasa.gov/api/citations/20200002830/downloads/20...
[1] https://imgur.com/qscoWrR
[2] https://imgur.com/HHg5ohS
Qui a dit que les femmes ne savaient pas faire de maths ?
https://www.smithsonianmag.com/science-nature/history-human-...
J’en ai un peu assez des articles sensationnalistes du genre “comparons le matériel qui a atterri sur la Lune au hardware d’aujourd’hui”. Les premiers avions n’avaient aucun type d’ordinateur, donc la puissance de calcul n’est pas le seul facteur qui détermine les performances et la réussite de ce genre d’entreprise.
Le logiciel et le matériel des missions Apollo étaient extrêmement bien conçus. Tout le monde sait qu’entre-temps la puissance de calcul est devenue absurdement plus élevée, mais cela ne veut pas dire qu’on pourrait faire la même chose facilement aujourd’hui. De meilleures performances ne suppriment pas le besoin de bonne ingénierie. Pourtant, certains semblent s’appuyer fortement sur ce présupposé.
Ce qui est plus intéressant, c’est la comparaison qui montre à quel point des technologies auxquelles nous ne prêtons pas attention sont devenues complexes. Ce n’est même pas un appareil connecté, ni une montre numérique des années 80 : c’est littéralement un câble qui contient autant de technologie qu’Apollo 11, et nous ne nous en rendons même pas compte.
Pour formuler l’objection autrement : l’une des raisons pour lesquelles aller sur la Lune est plus difficile que charger un appareil USB, c’est qu’en vol spatial il n’existe pas de composants sur étagère. Si, à chaque fois que vous chargiez votre téléphone, vous deviez fabriquer un chargeur USB à partir de zéro et même définir la spécification USB pour la première fois, les câbles USB seraient vite considérés comme un problème difficile eux aussi.
Le grand message à retenir de ce genre d’article n’est pas qu’Apollo 11 n’était pas une prouesse d’ingénierie extraordinaire. C’est qu’il existe dans notre quotidien une énorme quantité d’ingénierie, produite en masse, qui passe inaperçue.
Si ces ingénieurs étaient transportés à notre époque, ils apprendraient sans problème le nouveau matériel. Nous restons les mêmes humains, avec les mêmes cerveaux humains.
“La puissance de calcul n’est pas le seul facteur déterminant” s’applique-t-il aussi à la tâche consistant à charger un téléphone ?
Je me demande si les calculs de poids et de coût se sont désormais suffisamment améliorés pour qu’il soit moins cher de blinder l’ensemble du processeur que de rendre le circuit lui-même tolérant aux radiations. Les circuits tolérants aux radiations rendent difficile l’usage de composants du commerce et limitent aussi l’emploi des technologies les plus récentes, ce qui les rend beaucoup plus coûteux
Si ma mémoire est bonne, c’était l’un des axes explorés pour le drone martien, mais je ne sais pas vraiment si les inquiétudes liées aux radiations à la surface de Mars sont différentes de celles des usages dans l’espace
« Le logiciel de vol est écrit en C/C++ et s’exécute dans un environnement x86. Pour chaque calcul/décision, la “flight string” compare les résultats de deux cœurs. En cas de divergence, cette string est considérée comme défectueuse et n’envoie pas de commande. Si les deux cœurs renvoient la même réponse, la string envoie des commandes aux différents microcontrôleurs de la fusée qui contrôlent des éléments comme les moteurs et les grid fins. »
https://space.stackexchange.com/a/9446/53026
La sonde Galileo utilisait une plaque de tungstène pour protéger le processeur du récepteur de relais de la sonde, et l’instrument plasma de Galileo utilisait un blindage au tantale. Justement, j’étais en train d’étudier le blindage contre les radiations
Presque toutes les puces USB, si l’on regarde leur datasheet, disposent d’un CPU entièrement programmable. Pour un simple périphérique HID ou un chargeur, cela peut sembler un peu ridicule, mais les microcontrôleurs de base sont bon marché et réduisent en pratique les coûts par rapport à un ASIC
L’affirmation selon laquelle « le LVDC contient en réalité une logique à triple redondance » est un détail très mineur, mais ce n’est pas parce qu’il y a trois exemplaires de quelque chose qu’il s’agit d’une triple redondance. Selon les critères de redondance, trois exemplaires correspondent à une double redondance, deux à une redondance simple, et un seul à aucune redondance
À moins que le mécanisme de vote puisse, somehow, produire la bonne réponse même lorsque les trois implémentations donnent toutes des réponses différentes, je ne vois pas comment on peut parler de triple redondance. Le mécanisme de vote lui-même constitue-t-il fonctionnellement une quatrième implémentation ?
Comme le LVDC est un ordinateur série, il suffit de traiter un seul bit à la fois, ce qui simplifie l’implémentation du vote
Le LVDC était une conception fortement redondante qui ne devait pas tomber en panne, tandis que l’AGC n’avait pas de redondance, mais était conçu pour récupérer rapidement en cas de panne
Je me demande s’il existe un moyen de savoir, sans les démonter, quel matériel exact est utilisé dans les petits appareils que l’on ne considère généralement pas comme des ordinateurs, par exemple les chargeurs de smartphone
Existe-t-il des datasheets particulières ou des documents de certification gouvernementaux ? J’ai toujours été fasciné par le matériel aux spécifications minimales qui fait fonctionner l’électronique du quotidien, et j’aimerais savoir où l’auteur a obtenu ces informations
Même les vieux claviers des années 1970 contenaient un CPU entièrement programmable, généralement une variante de l’Intel MCS-48 https://en.wikipedia.org/wiki/Intel_MCS-48#Uses
Aujourd’hui, c’est encore plus vrai. Les claviers, trackpads, souris, tous les périphériques USB, etc. contiennent un CPU entièrement programmable
Que le CPU de l’Anker PowerPort Atom PD 2 USB-C Wall Charger soit 563 fois plus rapide que l’Apollo 11 Guidance Computer, c’est stupéfiant : l’objet qui recharge mes appareils aurait pu envoyer des humains sur la Lune si on l’avait programmé pour ça.
Beaucoup d’ingénieurs au sol n’avaient pas d’ordinateur, et les plus chanceux utilisaient non pas une machine personnelle, mais un mainframe.
Les ordinateurs étaient si précieux qu’on ne les utilisait que pour les tâches qui en avaient absolument besoin, en particulier quand la précision ou la vitesse de calcul était critique.
Cela montre ce qui se passe quand on donne des ressources de niveau mainframe à des gens qui savaient déjà très bien faire de l’aérospatial à la règle à calcul.
Tous les atterrissages se faisaient en fly-by-wire : le pilote tenait les commandes, tandis que les propulseurs étaient contrôlés par le logiciel.
https://www.quora.com/Could-the-Apollo-Guidance-Computer-hav... :
« P64. À environ 7 000 pieds d’altitude, au point appelé “high gate”, l’ordinateur passait automatiquement en P64. Il assurait encore tout le vol et guidait le LM vers la cible d’atterrissage. Le Commander pouvait toutefois regarder le site d’atterrissage et, s’il ne lui convenait pas, choisir une autre cible ; l’ordinateur modifiait alors la trajectoire pour l’y conduire.
À ce stade, l’un des trois programmes suivants était utilisé pour terminer l’atterrissage.
P66. C’est le programme qui a effectivement été utilisé lors des six alunissages. À quelques centaines de pieds au-dessus de la surface, le Commander demandait à l’ordinateur de passer en P66. On l’appelle souvent “mode manuel”, mais il n’était pas vraiment entièrement manuel. Dans ce mode, le Commander pilotait le LM en indiquant à l’ordinateur les mouvements qu’il voulait effectuer, et l’ordinateur les exécutait. Cela continuait jusqu’à l’atterrissage.
P65. C’est le mode automatique évoqué dans la question. Si l’ordinateur restait en P64 jusqu’à environ 150 pieds d’altitude, il passait automatiquement en P65, et P65 amenait le LM jusqu’à la surface sous contrôle de l’ordinateur. Le problème était que l’ordinateur n’avait aucun moyen de repérer les obstacles ni de déterminer si la zone d’atterrissage visée était suffisamment plane. Sur tous les vols, le Commander voulait choisir un autre point que celui vers lequel l’ordinateur l’emmenait ; il passait donc en P66 avant que l’ordinateur ne bascule automatiquement en P65. [Mise à jour : sur les vols ultérieurs, le code P65 a été retiré de l’AGC. Les programmeurs avaient besoin de mémoire pour d’autres morceaux de code, et la mémoire de l’AGC était si limitée que pour ajouter du code quelque part, il fallait enlever quelque chose ailleurs. À ce stade, il était clair qu’aucun équipage n’utiliserait le mode d’atterrissage automatique, donc P65 a été supprimé.]
P67. C’est le véritable mode entièrement manuel. En P66, même si le pilote contrôle l’appareil, l’ordinateur reste dans la boucle. En P67, l’ordinateur est complètement déconnecté. Il continue de fournir des données comme l’altitude et la vitesse de descente, mais il ne contrôle plus le véhicule. »
Dans 50 ans, l’équivalent actuel d’un cluster d’entraînement GPT-4 de datacenter tiendra dans un câble bas de gamme et tournera plus de 100 fois plus vite que tout le cluster d’aujourd’hui.
Si l’on suppose que l’entraînement de GPT-4 a pris environ 100 jours, cela veut dire que dans 50 ans, un appareil de type smartphone ordinaire pourra entraîner de zéro un modèle de niveau GPT-4 en moins d’une seconde.
Je ne savais pas que seul le LVDC intégrait une logique à triple redondance.
La phrase « imiter ce mode de vote avec trois microcontrôleurs et un quatrième contrôleur chargé de comptabiliser les votes n’améliore pas la fiabilité du système » est assez claire : le compteur de votes devient un point de défaillance unique.
Je ne sais pas très bien comment Tandem et Stratus géraient les désaccords entre deux processeurs. Stratus utilisait une paire de processeurs OTC 68K, ce qui ne ressemble pas vraiment à un vote. Avec seulement deux votants, je ne vois pas comment résoudre un désaccord.
Je ne vois pas bien comment fabriquer, avec des puces CPU standard, un processeur « fiable » fondé sur le vote. Il faudrait sans doute que chaque CPU observe la sortie des deux autres et, s’il perd le vote, cesse lui-même de voter, mais cela ressemble à du matériel CPU sur mesure.
Le matériel externe qui compare les votes, indique au CPU d’arrêter de voter et route vers la sortie gagnante est, au final, un compteur de votes, donc un point de défaillance unique. On pourrait avoir trois compteurs de votes qui se surveillent mutuellement, mais il faudrait alors un compteur de compteurs de votes. Ensuite, ce sont des tortues jusqu’en bas.
En général, faire voter plusieurs CPU pour augmenter la fiabilité me paraît risqué, car la complexité supplémentaire peut au contraire réduire la fiabilité.
Fabriquer un processeur fiable revient peut-être, en fin de compte, à fabriquer un processeur auquel on peut faire confiance.
Dommage que le lien vers la biographie de Jonny Kim soit cassé. Le lien qui fonctionne est https://www.nasa.gov/people/jonny-kim/.
C’est probablement l’un des humains les plus impressionnants de l’histoire. Navy SEAL décoré, médecin à Harvard, astronaute, entre autres parcours. On dirait qu’un enfant a assemblé le G.I. Joe ultime.