dimecres, 19 de novembre del 2008

Mis especiales aventuras espaciales

[Escrito originalmente en mi extinto blog (jordiplanas.com) el 18 de Octubre de 2008 (publicado al día siguiente) y rescatado gracias a archive.org y a mis copias de seguridad de las imágenes. Pongo en cursiva los addendums de la revisión del 19/4/2014]
Como ya he indicado en otros escritos empecé a programar soldando cables de cobre que pasaban, o no, por dentro de núcleos de ferrita en las memorias caché (permanentes) de ferritas [El término “Caché” no se utilizaba entonces para las memorias tampón, como ahora, sino para las memorias permanentes, aún sin suministro eléctrico]:
Memoria caché: cables de cobre dentro de núcleos de ferrita
Memoria caché
Donde los cables verticales y horizontales son los que aportan voltaje a los núcleos. Por ejemplo, el vertical aporta 0,5 voltios y el horizontal lo mismo. Si el núcleo de ferrita responde al voltio, sólo se activará si hay voltaje simultáneamente en el cable vertical y horizontal. El saber si el núcleo está o no activado corresponde a los cables en diagonal. Bien, pues señores, cada núcleo es un bit. A partir de ahí…
Realmente con estos sistemas lo que se hacía eran tablas de decisiones, cualquier otra cosa era un reto… pero apasionante donde cada bit era importante (jóvenes absténganse de reír, esos bits eran muy caros entonces)
Bien, pues en mi etapa de programador, una vez superadas las épocas de soldador y de las tarjetas perforadas, como también ya he escrito en alguna ocasión, me quedé embobado literalmente por las posibilidades gráficas de los ordenadores, que en aquélla época (los 70′s) no eran nada comparadas con las de ahora, pero bueno en aquel momento era lo máximo.
Tarjeta perforada
Tarjeta perforada de 80 columnas, luego salieron otras más pequeñas pero con 96.
Ese interés me llevó a moverme para conseguir que me contrataran para hacer los programas de demostración de las series de terminales gráficos de fósforo de Textronics, líderes del momento, y a ingresar en The Society for Modeling & Simulation International (SCS), donde suplí las carencias de mi formación autodidacta (no había otra) y, además, me dotó de un cierto prestigio en el emergente sector.
Pienso que fruto de ese relativo prestigio con la SCS y de mis trabajos para y con IBM, Data General, Wang, ICL, Control Data Corporation, Burroughs (segunda compañía mundial de informática del momento, pero poco popular en España, de ella eran los primeros cajeros automáticos), NCR, Univac, Honeywell Bull y Textronics, entre otros, fue la invitación que me hicieron para participar en el proceso de diseño y comprobación del Space Shuttle en la segunda mitad de los 70.
Space Shuttle en la torre de lanzamiento
En este proyecto se definieron las bases de la computación redundante moderna.
En los sistemas redundantes analógicos es muy sencillo establecer un umbral (% de margen) para determinar si dos lecturas (o el valor medio de varias) son coincidentes o no, pero en el mundo digital, y mientras la lógica difusa no nos convenza, las cosas son o no son, un 1 no es igual a 0 y no hay % para establecer el umbral. Esta simple diferencia puede bloquear las decisiones del sistema más sofisticado.
Por otro lado estaba muy claro, al menos en esta ocasión, de que una cadena es tan débil como el más débil de sus eslabones. No se podía permitir que al sistema de decisión llegara información mediocre.
Resumiendo, en el Space Shuttle, el original, de los posteriores ya no estoy al corriente, existía un sistema redundante de 5 ordenadores en paralelo, todos ellos IBM A-101. No dejan de ser ordenadores de índole general derivados del conocido IBM 360, del que conserva su arquitectura interna general. Cada uno de ellos estaba equipado con unos míseros 1,310,720 bits of memoria caché de ferritas para un astronómico total de 700 Kb que era lo que ocupaba todo el software de control de los transbordadores a una escalofriante velocidad de proceso de 0.48 MIPS y 0.325 MFLOPS.
IBM A-101: Placa electrónica

IBM A-101: Placa electrónica

Mi trabajo en concreto fue diseñar y verificar la correcta sincronización del sistema de switch. Intentaré explicarme: Los cinco ordenadores estaban organizados en una estructura lógica de 2+2+1, [dos clusters de dos ordenadores y un tercero como árbitro, actuando funcionalmente como tres ordenadores] todos (los tres) hacían lo mismo, pero cada uno de ellos fue desarrollado por un equipo de analistas y programadores diferentes con las mismas especificaciones iniciales.
Esquema de conexión de los cinco ordenadores del Space Shuttle
Esquema de conexión de los cinco ordenadores del Space Shuttle

La idea es que si lo que decide el primer tándem coincide con lo que decide el segundo tándem se ejecuta, si no, se hace caso de lo que diga el quinto ordenador (tercero funcional), sea lo que sea. Bien pues mi misión, después de diseñado, fue montar un sistema de simulación para verificar que el software de sincronización entre los 5/3 ordenadores correspondía a las especificaciones.
Estructura interna del software del Space Shuttle
Estructura interna del software del Space Shuttle

En aquella época, en que no había estandarización casi en nada y menos en sistemas operativos, no era extraño que hiciéramos sistemas operativos nuevos, muchas veces en directo lenguaje máquina, para afrontar un problema específico, siempre que no tuviéramos que tocar demasiados periféricos diferentes, la confección de los drivers entretenían mucho.
Controlador maestro de sucesos del Space Shuttle
Controlador maestro de sucesos del Space Shuttle

Pues aquí así lo hice diseñando uno a medida para este proyecto basado en procesadores Zylog Z-80, sobre los que monte un sistema operativo emulador del de los IBM A-101 y su output era TTY. En una primera fase generaba cinta perforada y luego comparábamos las cinco.

Visto desde el punto de vista de hoy en día, totalmente troglodítico.
Bueno, sea esta una primera aproximación a mis especiales aventuras espaciales…

Documentos: 
  • De lo primero:
  • Y ya algo posterior: 

Podéis ver mi entrada sobre el ordenador IBM A-101

Publicado originalmente en http://jordi-planas-manzano.roon.io/mis-especiales-aventuras-espaciales



Altres ordinadors amb els que he treballat:

2 comentaris:

Unknown ha dit...

La pregunta que me viene a la mente es si en real (con el shuttle en el espacio) tenemos datos de si hubo necesidad de recurrir a la respuesta del quinto ordenador por discrepancias en los otros. ¿Las hubo? ¿Fueron muchas? ¿La decisión del 5 fue correcta?

Muy interesante todo esto...

Albert

Jordi Planas Manzano ha dit...

Pues no, no hubo ninguna información, la memoria disponible (ni cintas ni discos) era tan reducida que no podíamos guardar ningún log de lo ocurrido.

Ahora bien, has de tener en cuenta que en aquellas épocas, y para este tipo de asuntos quasi-militares, para diseño del sistema de pruebas se tardaba casi el triple que para diseñar el propio sistema.

No se si entró a funcionar el quinto ordenador, o no, pero el asunto es que el aparato volvió con su tripulación sana y salva... no hay mejor log... ;-)