julho 17, 2019

[Geek] Os computadores do projeto Apollo

Vi um artigo muito legal na Computer Weekly sobre como as necessidades de computação para os vôos do programa Apollo influenciaram o desenvolvimento de Software e Hardware.

Era os anos 60, quando os "computadores" da época ocupavam facilmente uma sala inteira e tinham uso muito específico. Não existiam computadores pessoais, e nossos smartphones e tablets não existiam nem mesmo nos filmes de ficção científica! Então, a NASA se viu frente ao desafio de construir computadores a bordo das naves Apollo para ajudar no controle de navegação (incluindo pouso e decolagem) e colocá-los no espaço minúsculo das naves do projeto Apollo - aonde, a propósito, qualquer quilograma a mais era regulado pois poderia representar um uso maior de combustível.

Resumindo o artigo (vale a leitura!), e adicionando algumas informações extras, os desafios eram vários:
  • Do ponto de vista de hardware, o desafio foi conseguir miniaturizar os computadores existentes. Ainda não tinham sido inventados os microprocessadores, então os computadores de bordo foram desenvolvidos usando circuitos integrados, uma novidade na época;
  • Os computadores foram "empacotados" em uma caixa de magnésio-alumínio selada, robusta, em cor dourada, que media cerca de 15cm x 30cm x 61 cm, pesava 70 quilos e consumia cerca de 55 watts;
  • E o hardware tinha que ter altíssimo nível de confiabilidade ("reliability", em inglês), para resistir as condições necessárias de vôo no espaço!
  • Os computadores do sistema de navegação do Módulo de Comando e do Módulo Lunar possuíam uma "memória fixa" que armazenava os programas (equivalente ao que hoje chamamos de "ROM"), com um tamanho equivalente a 72 Mbytes (ela tinha, na verdade, espaço para 36.864 palavras de 15 bits cada + bit de paridade) e também tinha uma área de "memória apagável" (nossa "RAM") de 4 Kbytes para dados variáveis (2048 "palavras" de 15 bits e bit de paridade);



  • Os computadores de bordo tinham que rodar em tempo real e multitarefa, algo inédito na época;
  • Os engenheiros tiveram que desenvolver um sequenciador em software para ordenar as tarefas por prioridade;
  • Haviam tarefas consideradas "críticas" e outras que eram "secundárias", então quando necessário o computador podia processar somente as tarefas críticas. e ignorar as secundárias. Além disso, haviam tarefas baseadas em tempo (ex: acionar o motor durante a descida em um determinado momento);
  • Em caso de reinicio do computador, ele voltava a operar as atividades críticas do exato ponto aonde pararam;
  • Os programas eram todos escritos em Assembler, até mesmo porque ainda não existiam linguagens de alto nível. A linguagem C, por exemplo, foi inventado em 1972 (ano da última missão do programa Apollo, a Apollo 17);
  • As espaçonaves tinham que utilizar o mínimo possível de linhas de código, devido a limitações de processamento e memória;
  • Mesmo assim, o software tinha 6 Mbytes de tamanho, e foi considerado o programa mais complexo da época!
  • Na Terra, o controle da missão utilizava um Mainframe da IBM.
Os softwares dos computadores de bordo foram desenvolvidos pelo MIT, e esse foi o primeiro contrato assinado pelo projeto Apollo. Eu lembro de ter visto em um documentário que, devido a complexidade dos softwares e dos desafios tecnológicos, por pouco o pessoal do MIT não consegue entregá-los a tempo!

O time de engenheiros de software da NASA era liderado por uma mulher, a Margaret Hamilton - na época, com 32 anos.



Para saber mais:
OBS: Pequena atualização em 29/07.

Nenhum comentário:

Creative Commons License
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of my employee.