Ir al contenido

Diferencia entre revisiones de «Apollo Guidance Computer»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Enen (discusión · contribs.)
Enen (discusión · contribs.)
Línea 137: Línea 137:


=== Otros registros ===
=== Otros registros ===

<!--
[[File:ApolloGuidanceComputerwithDSKY.agr.jpg|thumb|DSKY and AGC on display at the [[Computer History Museum]]. The AGC is opened up showing its logic modules.]]
[[File:ApolloGuidanceComputerwithDSKY.agr.jpg|thumb|DSKY and AGC on display at the [[Computer History Museum]]. The AGC is opened up showing its logic modules.]]
[[File:AGClogicmodule.agr.jpg|thumb|Prototype logic module from Block I AGC.]]
[[File:AGClogicmodule.agr.jpg|thumb|Prototype logic module from Block I AGC.]]
Línea 143: Línea 143:
[[File:Agc nor2.jpg|thumb|AGC dual nor gate]]
[[File:Agc nor2.jpg|thumb|AGC dual nor gate]]
[[File:Agc nor2a.jpg|thumb|AGC dual nor gate schematic]]
[[File:Agc nor2a.jpg|thumb|AGC dual nor gate schematic]]
El AGC tenía varios registros adicionales que se usaban internamente durante el transcurso de una operación:
The AGC had additional registers that were used internally in the course of operation:
{|border="0"
{|border="0"
|- valign="top"
|- valign="top"
| '''S''' ||:
|'''S''' ||:
| Registro de 12 bits de dirección de memoria, la parte inferior de la dirección de memoria
|12-bit memory address register, the lower portion of the memory address
|- valign="top"
|- valign="top"
|'''Bank/Fbank''' ||:
|'''Bank/Fbank''' ||:
| Registro de 4 bits de la ROM, para seleccionar el 1&nbsp;k de palabras de la ROM cuando se direcciona en el modo conmutable-fijo
| 4-bit ROM bank register, to select the 1&nbsp;kiloword ROM bank when addressing in the fixed-switchable mode
|- valign="top"
|- valign="top"
|'''Ebank''' ||:
|'''Ebank''' ||:
| Registro de 3 bits de la RAM, para seleccionar las 256 palabras de la RAM cuando se direcciona en el modo conmutable-borrable
|3-bit RAM bank register, to select the 256-word RAM bank when addressing in the erasable-switchable mode
|- valign="top"
|- valign="top"
|'''Sbank''' (super-bank) ||:
|'''Sbank''' (super-bank) ||:
|1-bit extension to Fbank, required because the last 4&nbsp;kilowords of the 36-kiloword ROM was not reachable using Fbank alone
| Extensión de 1 bit al Fbank, necesario porque las últimas 4&nbsp;kilopabalras de la ROM de 36-kilopalabras no es alcanzable usando solo Fbank
|- valign="top"
|- valign="top"
|'''SQ'''||:
|'''SQ'''||:
| Registro de secuencia de 4 bits; la instrucción actual
|4-bit sequence register; the current instruction
|- valign="top"
|- valign="top"
|'''G'''||:
|'''G'''||:
| Registro de 16 bits del buffer de memoria, para mantener la transmisión de palabras de datos desde y hacia la memoria
|16-bit memory buffer register, to hold data words moving to and from memory
|- valign="top"
|- valign="top"
|'''X'''||:
|'''X'''||:
| La entrada 'x' del ''sumador'' (el sumador se usaba para realizar toda la aritmética [[complemento a uno]]) o el incremento del contador de programa (registro '''Z''')
| The 'x' input to the ''adder'' (the adder was used to perform all [[ones' complement|1's complement]] arithmetic) or the increment to the program counter ('''Z''' register)
|- valign="top"
|- valign="top"
|'''Y'''||:
|'''Y'''||:
| The other ('y') input to the adder
| La otra entrada ('y') al sumador
|- valign="top"
|- valign="top"
|'''U'''||:
|'''U'''||:
|Not really a register, but the output of the adder (the 1's complement sum of the contents of registers '''X''' and '''Y''')
|No es realmente un registro, sino la salida del sumador (la suma en complemento a 1 del contenido de los registros '''X''' e '''Y''')
|- valign="top"
|- valign="top"
|'''B'''||:
|'''B'''||:
|General-purpose buffer register, also used to pre-fetch the next instruction. At the start of the next instruction, the upper bits of '''B''' (containing the next op. code) were copied to '''SQ''', and the lower bits (the address) were copied to '''S'''.
| Registro buffer de propósito general, también usado para pre-cargar la siguiente instrucción. Al comienzo de la siguiente instrucción, los bits superiores de '''B''' (con el siguiente código de operación) eran copiados a '''SQ''', y los bits inferiores (la dirección) eran copiados a '''S'''.
|- valign="top"
|- valign="top"
|'''C'''||:
|'''C'''||:
| No es un registro independiente, sino el complemento a uno del registro '''B'''
| Not a separate register, but the 1's complement of the '''B''' register
|- valign="top"
|- valign="top"
|'''IN'''||:
|'''IN'''||:
| Cuatro registros de entrada de 16 bits
|Four 16-bit input registers
|- valign="top"
|- valign="top"
|'''OUT'''||:
|'''OUT'''||:
| Cinco registro de salida de 16 bits
| Five 16-bit output registers
|}
|}

-->
=== Conjunto de instrucciones ===
=== Conjunto de instrucciones ===
<!--
<!--

Revisión del 13:01 4 abr 2012

Apollo Guidance Computer
Información
Tipo equipamiento
Fabricante

El Computador de Navegación del Apolo ó Apollo Guidance Computer (en adelante AGC) era un elemento fundamental del programa Apolo. Su papel en el programa espacial fue proporcionar el control y la capacidad de cálculo necesarios para controlar la orientación, y la navegación del módulo de mando (CM, de Command Module) y del módulo lunar (LM, de Lunar Module). Este ordenador destaca por haber sido uno de los primeros computadores basados en CIs.

El AGC y su interfaz DSKY se desarrollaron a principios de los 1960s por el MIT Instrumentation Laboratory para el programa Apolo.

La interfaz de pantalla y teclado (DSKY) del Apolo Guidance Computer montada en el panel de control del módulo de mando, con el Flight Director Attitude Indicator (FDAI) encima.
Lista parcial de los códigos numéricos para verbos y nombres en el Apollo Guidance Computer. Fueron impresos en un panel lateral como guía de referencia rápida.

El AGC en el Apolo

Cada vuelo a la Luna (a excepción del Apolo 8, que no llevó módulo lunar en su misión a la órbita lunar) tenía dos AGCs, uno en el módulo de mando y otro en el módulo lunar. El AGC del módulo de mando estaba situado en el centro del sistema de navegación y orientación (G&C) de la nave. El AGC del módulo lunar llevaba su propio sistema primario de orientación, control y navegación del Apolo, conocido por el acrónimo de PGNCS (pronunciado como pings).

Cada misión lunar tuvo dos ordenadores adicionales:

Diseño

El AGC se diseñó en el MIT Instrumentation Laboratory bajo la dirección de Charles Stark Draper, con el diseño hardware a cargo de Eldon C. Hall.[1]​ Los primeros trabajos sobre la arquitectura llegaron de manos de J.H. Laning Jr., Albert Hopkins, Ramon Alonso,[2][3]​ y Hugh Blair-Smith.[4]​ La empresa Raytheon fabricó el hardware de vuelo, y Herb Thaler[5]​ también estaba en el equipo de diseño.

El computador de vuelo del Apolo fue el primero en usar circuitos integrados (CIs). Mientras que la versión Block I usaba 4100 CIs, conteniendo cada uno una sencilla puerta NOR de 3 entradas, la versión posterior Block II (usada en los vuelos tripulados) empleó 2800 CIs, cada uno con dos puertas NOR de 3 entradas.[1]: 34  Los CIs, de Fairchild Semiconductor, se implementaron usando lógica resistencia-transistor (RTL) en un flat-pack. Fueron conectados mediante wire wrap, y luego el cableado se incorporó en un molde plástico de epoxy. Al usar un único tipo de integrado (las doble NOR3) para todo el AGC, se evitaron los problemas que plagaban los primeros diseños de computadores basados en CIs, como el computador de guiado Minuteman II , que usaba una mezcla de puertas con lógica diodo-transistor y otras con lógica diodo-resistor.

El computador tenía 2048 palabras de memoria de núcleos magnéticos borrable y 36 kilopalabras de memoria de núcleos cableados de solo lectura. Ambas tenían un ciclo de 11,72 micro-segundos. La longitud de la palabra de memoria era de 16 bits: 15 bits de datos y 1 bit de paridad impar. El formato de palabra de la CPU de 16 bits eran 14 bits de datos, 1 bit de overflow, y 1 bit de signo (en representación complemento a uno).

Interfaz DSKY

Interfaz de usuario DSKY del computador del Apolo.
Diagrama de la interfaz DSKY del LM.

La interfaz de usuario con la que se accedía al AGC era la DSKY ( abreviatura del inglés display and keyboard, que en castellano significa teclado y pantalla), pronunciado comúnmente como dis-key. Poseía un vector de indicadores luminosos, varios visualizadores numéricos y un teclado tipo calculadora. Los comandos se introducían como números de dos dígitos: Verbo, y Nombre. El Verbo describía el tipo de la acción a realizar y el Nombre especificaba el dato afectado por la acción indicada por dicho verbo.

Los numerales se mostraban a través de visualizadores de siete segmentos electroluminescentes de alto voltaje de color verde. Para controlar estos visualizadores se usaban relés electromecánicos que limitaban su velocidad de refresco (la versión posterior Block II usaban rectificadores controlados de silicio más veloces). En ellos se podían visualizar tres números de 5 dígitos con signo en base octal o decimal, y se usaban típicamente para mostrar vectores tales como la actitud del vehículo espacial o un cambio de velocidad necesario (delta-V). Aunque los datos se almacenaban internamente en unidades métricas, estos se mostraban según el sistema anglosajón de unidades. Esta interfaz tipo calculadora[nb 1]​ fue la primera de su clase, y el prototipo para todas la interfaces de paneles de control similares.

El modulo de mando tenía dos DSKYs conectadas a su AGC; una situado en el panel de instrumentos principal y una segunda en la bahía de equipos cerca de un sextante que se usaba para alinear la plataforma de navegación inercial. El módulo lunar tenía una única interfaz DSKY para su AGC. Unos indicadores de actitud (FDAI), controlados por el AGC, se situaban sobre la DSKY en la consola del comandante y en el LM.

En 2009, se vendió un DSKY por $50788 en la subasta pública organizada por Heritage Auctions.[6]

Temporización

El cristal oscilador del reloj del AGC tenía una frecuencia de unos 2.048 MHz. Esta señal se dividía por dos para producir un reloj de 1.024 MHz de cuatro fases que usaba el AGC para realizar las operaciones internas. Además, la señal de 1.024 MHz se dividía por dos para producir una señal de 512 kHz denominada frecuencia maestra; esta señal se usaba para sincronizar los sistemas externos del Apolo.

A su vez, la frecuencia maestra primero se dividía mediante un escalador por cinco, usando un contador en anillo para producir una señal de 102.4 kHz. Luego era dividida por dos a través de 17 etapas consecutivas: desde F1 (51.2 kHz) hasta F17 (0.78125 Hz). La etapa F10 (100 Hz) era retroalimentada hacia el AGC para incrementar el reloj en tiempo real y otros contadores involuntarios usando el Pinc (detallado a continuación). La etapa F17 se usaba para cargar intermitentemente el AGC cuando trabajaba en modo standby.

Registros centrales

El AGC tenía cuatro registros de 16 bits con propósitos computacionales conocidos como los registros centrales:

A : El acumulador, para uso general
Z : El contador de programa - la dirección de la siguiente instrucción a ser ejecutada
Q : El resto de la instrucción DV, y la dirección de retorno en las instrucciones TC
LP : El producto inferior en las instrucciones MP

También habían cuatro posiciones en la memoria central, en las direcciones 20-23, denominadas posiciones de edición porque lo que estuviera almacenado allí sería devuelto desplazado o rotado un bit, excepto para lo que fuera desplazado a la derecha 7 bits, para extraer uno de los 2 códigos de operación de 7 bits empaquetados en una palabra. Esto era común a los AGCs del Bloque I y del Bloque II.

Otros registros

DSKY and AGC on display at the Computer History Museum. The AGC is opened up showing its logic modules.
Prototype logic module from Block I AGC.
Block II logic module, with flat-pack ICs.
AGC dual nor gate
AGC dual nor gate schematic

El AGC tenía varios registros adicionales que se usaban internamente durante el transcurso de una operación:

S : Registro de 12 bits de dirección de memoria, la parte inferior de la dirección de memoria
Bank/Fbank : Registro de 4 bits de la ROM, para seleccionar el 1 k de palabras de la ROM cuando se direcciona en el modo conmutable-fijo
Ebank : Registro de 3 bits de la RAM, para seleccionar las 256 palabras de la RAM cuando se direcciona en el modo conmutable-borrable
Sbank (super-bank) : Extensión de 1 bit al Fbank, necesario porque las últimas 4 kilopabalras de la ROM de 36-kilopalabras no es alcanzable usando solo Fbank
SQ : Registro de secuencia de 4 bits; la instrucción actual
G : Registro de 16 bits del buffer de memoria, para mantener la transmisión de palabras de datos desde y hacia la memoria
X : La entrada 'x' del sumador (el sumador se usaba para realizar toda la aritmética complemento a uno) o el incremento del contador de programa (registro Z)
Y : La otra entrada ('y') al sumador
U : No es realmente un registro, sino la salida del sumador (la suma en complemento a 1 del contenido de los registros X e Y)
B : Registro buffer de propósito general, también usado para pre-cargar la siguiente instrucción. Al comienzo de la siguiente instrucción, los bits superiores de B (con el siguiente código de operación) eran copiados a SQ, y los bits inferiores (la dirección) eran copiados a S.
C : No es un registro independiente, sino el complemento a uno del registro B
IN : Cuatro registros de entrada de 16 bits
OUT : Cinco registro de salida de 16 bits

Conjunto de instrucciones

Memoria

Interrupciones y contadores involuntarios

Modo Standby

Buses de datos

Software

El bloque II

EL problema del PGNCS

Código de error 00404

Aplicaciones después del Apollo

Véase también

Notas

  1. The first advanced desktop calculators hit the market in roughly the same time frame, with scientific and then programmable pocket calculators appearing during the following decade. The first programmable handheld calculator, the HP-65, was tried on backup computations aboard the Apollo Command/Service Module in the Apollo-Soyuz Test Project in 1975.

Referencias

  1. a b c Hall, Eldon C. (1996), Journey to the Moon: The History of the Apollo Guidance Computer, Reston, Virginia, USA: AIAA, p. 196, ISBN 156347185X .
  2. «Ramon Alonso's introduction», AGC History Project (Caltech archive, original site closed) (MIT), July 27, 2001, consultado el 30 de agosto de 2009 .
  3. «Ramon Alonso's interview (Spanish)», Ramón Alonso, el argentino que llevó a la Apollo 11 a la Luna (Diario La Nacion), March 7, 2010 .
  4. «Hugh Blair-Smith biography», AGC History Project (Caltech archive, original site closed) (MIT), January, 2002, consultado el 30 de agosto de 2009 .
  5. «Herb Thaler introduction», AGC History Project (Caltech archive, original site closed) (MIT), 14-September-2001, consultado el 30 de agosto de 2009 .
  6. [1]

Enlaces externos

Documentación sobre el AGC y su desarrollo

Documentación del diseño del hardware del AGC, y particularmente el uso de los nuevos circuitos integrados en lugar de transistores

Documentación del software operativo del AGC

  • Delco Electronics, Apollo 15 - Manual for CSM and LEM AGC software used on the Apollo 15 mission, including detailed user interface procedures, explanation of many underlying algorithms and limited hardware information. Note that this document has over 500 pages and is over 150 megabytes in size.

Algunos proyectos y simuladores basados en el AGC

  • AGC Replica – John Pultorak's successful project to build a hardware replica of the Block I AGC in his basement. Mirror site: AGC Replica.
  • Virtual AGC Home Page – Ronald Burkey's AGC simulator, plus source and binary code recovery for the Colossus (CSM) and Luminary (LEM) SW
  • Project Apollo for Orbiter – Addon for Orbiter spaceflight simulator, working towards a full simulation of the CSM and LEM including the Virtual AGC.
  • Eagle Lander 3D Shareware Lunar Lander Simulator with a working AGC and DSKY (Windows only)

Reportajes