Viajeros computados

Lanzadas en 1977, las sondas Voyager 1 y 2 eran piezas de tecnología de
vanguardia para su época. Las computadoras centrales para sus
operaciones consistían en tres sistemas, cada uno con doble redundancia,
trabajando al un{isono para permitir que las sondas viajaran a Júpiter,
Saturno y más allá: el Sistema Control Computado (CCS), el Subsistema de
Datos de Vuelo (FDS), y el Sistema de Control de Actitud y Articulación
(AACS).

Lo sorprendente es que incluso después de cuatro décadas de viajar a
través del duro y a veces impredecible entorno del espacio, ambas sondas
continúan funcionando y aportando nuevos conocimientos y datos. Cada vez
lleva más tiempo poder comunicar y cargar nuevas rutinas en las sondas,
pero el hecho de que todavía sea posible con tecnología de una época
pasada es un testimonio de la calidad de la ingeniería aplicada a estas
naves espaciales.

La historia de cómo tomaron forma las computadoras Voyager es
fascinante. Los detalles, que se reunieron durante los recortes
presupuestarios de la NASA después de que se desvaneciera el entusiasmo
por la era Apollo, y superaron los desafíos que aún no habían encontrado
los ingenieros al explorar algunos de los lugares más intrigantes de
nuestro sistema solar, seguramente permitirán apreciar mejor las
computadoras Voyager.

##Desarrollo y Gestión

El proceso de desarrollo y gestión de hardware y software informático
puede no ser la parte más apasionante del proceso, pero es
increíblemente crucial para el resultado final.

Una de las primeras decisiones de diseño que se tomaron sobre las
computadoras Voyager fue la de utilizar el Computer Command System (CCS)
de la veterana sonda Viking. Esto no sólo satisfizo una propuesta para
estandarizar el sistema informático sino que también fue una decisión
impulsada por los recortes presupuestarios de la NASA tras el éxito de
las misiones Apollo en los años 1970. Por entonces, la exploración
espacial no tripulada se había vuelto mucho menos prioritaria, por lo
que era importante mantener bajos los costos de desarrollo para permitir
que el proyecto en general continuara.

Los nuevos elementos de las computadoras Voyager en general serían el
Sistema de datos de vuelo (FDS) y el Sistema de control de articulación
de actitud (AACS). El CCS sería responsable de mando y gestión de la
memoria del FDS y AACS, lo que impuso agregarle una rutina MEMLOAD
("carga en memoria") y una rutina AACSIN para monitorear el estado del
AACS.

Cada sistema informático de la sonda espacial Voyager tiene doble
redundancia: hay dos CCS, dos FDS y dos AACS. Por lo general, el CCS
permanecía encendido en todo momento, pero el FDS y el AACS operaban de
a un bus por vez. La idea fue que la inactividad regular de los sistemas
informáticos en espera ayudaría a mantener la vida útil de los sistemas.

El CCS de la Voyager y de la Viking tenían en última instancia la misma
cantidad de memoria (poco menos de 70 kB), sólo que las rutinas y
programas de las Voyager eran mucho más complejos. La capacidad de
reprogramación a bordo les permitió cargar periódicamente nuevas rutinas
y programas en su memoria no volátil y eliminó la necesidad de grandes
cantidades de memoria a bordo.

El software original para las sondas Voyager fue escrito en Fortran 5,
luego portado a Fortran 77 y hoy en día ciertas rutinas están portadas
en C. El software liviano y de bajo nivel cobró relevancia a medida que
las sondas se alejaron cada vez más de la Tierra, con lo que el enlace
de comunicaciones se fue volviendo cada vez más lento.

La parte de gestión del sistema informático Voyager también experimentó
algunos cambios en la estructura típica; H. Kent Frewing, ingeniero de
software de naves espaciales, comandaría a los ingenieros responsables
de cada sistema informático, y hasta cuatro programadoras trabajarían
juntas en el proyecto a la vez. Se formó un Equipo de Diseño de Software
de abordo para guiar el desarrollo de software y el Laboratorio de
demostración de capacidades completaría la validación del software. Una
vez desarrollado el software inicial, el hardware que se configuró con
la misma configuración que se usaría a bordo de la nave espacial se
usaría para probar y continuar con el desarrollo.

###Sistema computado de control

Como se mencionó anteriormente, el Voyager CCS sería casi idéntico al
Viking CCS, con algunas modificaciones para permitir la interfaz con el
FDS y el AACS. El Viking CCS fue el primer sistema informático
redundante implementado por el JPL (Laboratorio de Propulsión a Chorro
de la NASA), con un diseño relativamente simple que permitía una
potencia informática mucho mayor.

El Viking CCS se formaba a pares: de fuentes de alimentación, de
procesadores, de buffers, y de entradas y salidas. Cada elemento del CCS
tenía buses cruzados, lo que permitía una redundancia de "tolerancia a
fallas únicas" de modo que si una parte de un CCS fallaba, podía hacer
uso del resto operativo en el otro.

El CCS también podría funcionar en tres modos: canal simple (cada CCS
completa tareas de forma independiente), dúplex paralelo (ambos CCS
trabajan juntos en una tarea) o tándem (cada CCS trabaja en la misma
tarea de forma independiente). Durante encuentros cercanos con objetivos
(Júpiter, Saturno, etc.), el CCS estaría en modo tándem.
 
```
--> Fuente ----------------+            EPROM  -> usuarios
       |                   |          /
+-> Procesador A ->  Unidad de salida 1 ->  RAM -> usuarios
|               \ /        |
|                X         +-------------------------------->  telemetria } FDS
|	       /  \	   +-------------------------------->  telemetria } FDS
|             /    \       |
+-> Procesador B ->  Unidad de salida 2 ->  RAM -> usuarios
                           |           \
-->  Fuente ---------------+              EPROM -> usuarios
```
Diagrama de bloques para Viking y Voyager CCS.


El CCS es responsable de administrar las operaciones generales, incluida
la secuenciación de programas, monitorear el estado de las sondas,
comunicarse con las otras computadoras y cargar programas en memoria.

Ambos módulos CCS en el sistema de doble redundancia estarían encendidos
continuamente para permitir mayor capacidad de procesamiento, de
importancia mayor una vez que se produjeran los encuentros con Júpiter,
Saturno, Urano y Neptuno para recopilar datos.

A nivel arquitectónico, los dos núcleos de procesamiento del CCS
operaban en serie, y contenían un intérprete de instrucciones, control
de ruta de datos y registros (acumulador de 18 bits, registro de enlace
de 12 bits, contador de programa de 12 bits, registro de código de
condición de 4 bits). Las 64 instrucciones eran WORDS de 18 bits, los 12
bits más significativos contenían direcciones (4k de direccionamiento
directo) y los 6 bits menos significativos contenían códigos de
operación.

###Sistema de datos de vuelo

El FDS es donde se recopilan, formatean y almacenan los datos
científicos y de ingeniería de las sondas Voyager, y donde se recopila
toda la telemetría. El desarrollo del FDS comenzó con un trabajo de
posgrado que describía sus requisitos generales, así como el
discernimiento de los beneficios de implementarlos en hardware o
software (qué características operan mejor en cada caso).

Una de las consideraciones más importantes para el FDS lo constituyó la
la velocidades de datos de entrada/salida. A medida que los sensores y
el hardware de recopilación de datos se volvían más sofisticados, esto
incrementó la resolución de la información que se necesitaba transmitir.
En las sondas Voyager, los datos de regreso a la Tierra se transmitirían
a alta velocidad, de ser posible. Sin embargo, si no se podía alcanzar
estas velocidades de transmisión (por ejemplo, si no se podía comunicar
con la estación terrena de seguimiento), los datos se almacenaban en
cintas magnéticas.

>Estas cintas magnéticas todavía se utilizan para la recopilación y
>transmisión de datos a bordo de las sondas mientras navegan actualmente
>por el espacio interestelar.

El FDS del Voyager fue la primer computadora de vuelos espaciales en
utilizar memoria volátil CMOS. Esto fue un gran paso para el cómputo,
pues que era una tecnología bastante nueva y - en el caso que los
circuitos integrados perdiesen momentáneamente alimentación eléctrica -
también se perdería toda la memoria. No obstante, se implementó una
línea de alimentación eléctrica directa desde los generadores de
radioisótopos, que le proporciona corriente continua, garantizando que
los circuitos integrados de semiconductores no pierdan energía jamás, a
menos que algo les sucediera a los generadores. De todos modos se
decidió que si de suceder algo que incapacitara los reactores nucleares,
probablemente el FDS ya sería inútil.

Debido a las tasas de entrada/salida requeridas por el FDS, el CCS y el
FDS se construyeron como diseños modulares separados (si bien desde el
punto de vista computacional, podrían haberse integrado fácilmente). De
hecho las sondas Voyager fueron las últimas construidas por el JPL en
contar con tal separación. El FDS - al igual que el CCS - es
reprogramable en vuelo, lo que permite optimización o cambios.

###Sistema de Control de Actitud y Articulación (AACS)

El AACS de las sondas Voyager determina la orientación de la antena,
manteniéndola apuntada hacia la Tierra. La intención original de los
diseñadores había sido emplear una tecnología nueva para el AACS a que
denominaban "HYSPACE" (Electrónica Híbrida de Control de Actitud
Programable). HYSPACE combinaba hardware analógico y digital, con
direccionamiento de registros por índice y arquitectura serial de 4
bytes, lo cual permitiría usar el mismo código fuente del AACS en el
accionamiento de los tres ejes.

Sin embargo, los programadores estuvieron condicionados a la
reutilización del viejo CCS de las sondas Viking para efectuar el
control de actitud, ya que había demostrado su valía, y reduciría los
costos del desarrollo de un nuevo sistema no probado.

Al final, terminó empleándose una versión modificada del CCS de la
Viking, con algunos elementos integrados del HYSPACE destinados a lograr
los beneficios del direccionamiento de registros por índice.

El AACS cuenta con cuatro rutinas ejecutables: motores paso a paso de la
plataforma de escaneo, actuadores del propulsor, software del control de
actitud y lógica de propulsor. La AACS también envía un ping en forma de
"latido" a la CCS a intervalos regulares.

Conclusión

El clima único en el momento del desarrollo de las sondas Voyager
influyó en gran medida en el resultado general de los sistemas
informáticos emplados a posteriori. Reutilizar diseños y modificarlos
para reducir costos, optimizar el uso de memoria limitada y maximizar la
velocidad sin aumentar la necesidad de energía siguen siendo problemas
que enfrentan los proyectos espaciales modernos en la actualidad.

A su vez, es increíblemente impresionante que el equipo detrás de las
computadoras Voyager no solo haya logrado diseños de bajo costo,
eficientes y computacionalmente poderosos, sino que toda su visión de
futuro e ingeniería inteligente permitieron a ambas sondas continuar
operando, con expectativas que lo hará durante al menos otra década.