Il Quarto Membro dell’Equipaggio (2) – L’Hardware

Durante la preparazione di questo post mi sono reso conto che il piano originale di dedicare 3 settimane all’AGC mi avrebbe costretto a ‘tagli mostruosi’ del materiale. Ho quindi deciso di allungare la serie per fornire più dettagli su questo capolavoro dell’ingegneria. Mettetevi comodi ed armatevi di pazienza: l’argomento richiederà la conoscenza di un pò di architettura dei computer. Dove possibile mi sono servito di Wikipedia ed altri siti per chiarire i termini. Un’ultima nota: se non indicato altrimenti tutte le informazioni fanno riferimento all’AGC Block II.

I due moduli dell’AGC

L’Apollo Guidance Computer era incredibilmente compatto per l’epoca. Il CMC (Command Module Computer) trovava posto nella Lower Equipment Bay, accanto alla stazione di navigazione. Misurava 61 x 32 x 17 cm, pesava 32 Kg, era alimentato a 28 V DC (corrente continua) ed assorbiva una potenza di 70 watt.

Dal punto di vista dell’architettura di sistema, l’AGC era un computer a 16 bit. La scelta di una word a 16 bit fu ponderata attentamente. Molti dei mainframe dell’epoca utilizzavano word a 24 bit o più, dato che ad lunghezza maggiore corrisponde una maggiore precisione. La decisione dell’MIT prese in considerazione alcuni fattori: ( a ) la precisione desiderata per i calcoli legati alla navigazione, ( b ) l’intervallo di valori possibili delle variabili di input e ( c ) il formato da utilizzare nelle word per le istruzioni. I vantaggi di una word più corta erano una velocità superiore di calcolo e una minore complessità dei circuiti; inoltre la precisione poteva essere aumentata utilizzando word multiple per rappresentare i dati. Una singola word utilizzava 14 bit per rappresentare il dato (singola precisione) più un bit per il segno ed uno di parità (non accessibile ai programmatori). Maggiore precisione era ottenibile utilizzando due (doppia precisione) o tre (tripla precisione) word adiacenti in memoria. Memorizzare un vettore tridimensionale ai fini dei calcoli d navigazione, richiedeva tre valori in doppia precisione. I dati venivano salvati come valori frazionari (tutti erano inferiori a 1 come valore). Una word per le istruzioni utilizzava i bit 15-13 (di solito i bit di una word si numerano da sinistra verso destra) per rappresentare l’op-code (il codice identificativo dell’istruzione) e i restanti bit (12-1) per l’indirizzo su cui l’istruzione andava ad operare.

Le istruzioni e i dati erano archiviati in un’area di memoria comune costituita da migliaia di celle a sola lettura (ROM) e un migliaio di celle riscrivibili (RAM). In quest’ultima area erano allocati anche un certo numero di registri.

Lo schema di una dell parti dell’AGC

L’AGC aveva quattro registri a 16 bit per i calcoli, chiamati i registri centrali (central registers), tra cui i più importanti erano l’accumulatore e il Program Counter (che conteneva l’indirizzo della istruzione successiva da eseguire). Altri registri erano utilizzati per gestire l’accesso alla memoria (Bank/Fbank, Ebank e Sbank), come buffer temporanei (G, B) o per specifiche operazioni matematiche (X, Y). L’AGC aveva anche 20 counter, locazioni di memoria utilizzate come contatori e/o registri di scorrimento.

La frequenza di clock principale dell’AGC era di 2,048 MHz. Attraverso appositi circuiti (scaler, divisori di frequenza) a partire da questa frequenza ne venivano generate altre, utilizzate per sincronizzare altre attività o altri sistemi. La frequenza divisa per due (1,024 MHz) veniva utilizzata in alcune parti dell’AGC. Una successiva divisione per due, generava la cosiddetta Master Frequency (512 MHz), utilizzata per sincronizzare altri sottosistemi della capsula Apollo (esterni all’AGC). La Master Frequency veniva divisa poi per 5 (102,4 kHz); questa frequenza passava attraverso 17 scaler successivi, da F1 (51,2 kHz) ad F17 (0.78125 Hz). Lo scaler F10 (100 Hz) veniva usato per incrementare l’orologio interno dell’AGC. L’F17 veniva utilizzato per attivare ad intervalli regolari l’AGC quando questo era in standby mode.

Questa era una modalità di risparmio energetico, attivata tramite un interruttore. In questa modalità l’AGC si spegneva ad eccezione del clock principale e degli scaler. Il segnale dell’F17 accendeva l’AGC ogni 1.28 secondi, venivano effettuate alcune operazioni essenziali e poi verificava lo stato dell’interruttore di standby. Se era ancora attivo, l’AGC si spegneva. In questa modalità il consumo del computer passava da 70 W a 5 / 10 W. Era previsto il suo utilizzo durante la navigazione da / verso la Luna. In pratica questa modalità non venne mai utilizzata.

L’AGC era in grado di rispondere a 5 interrupt. La risposta a questi interrupt prevedeva la sospensione del programma corrente, l’esecuzione di una breve routine di servizio e quindi la ripresa del regolare flusso delle operazioni. Gli interrupt erano i seguenti:

  • Dsrupt: scattava ad interval regulari per aggiornare il DSKY
  • Erupt: generato da eventuali problemi hardware o allarmi
  • Keyrupt: generate da ogni pressione di un tasto sulla tastier del DSKY
  • T3Rrupt: generato ad intervalli regolari, gestiva l’aggiornamento dell’orologio interno dell’AGC
  • Uprupt: generato quando venivano caricati dati nel’AGC da terra tramite il canale di uplink

In uno dei prossimi post tornerò sull’argomento.

L’AGC accedeva alla memoria tramite un bus di lettura (a 16 bit) e un bus di scrittura (sempre a 16 bit). I dati contenuti nei registri centrali venivano trasferiti da e per i registri tramite segnali di comando specifici. La memoria era costituita da nuclei di ferrite simili a quelli già usati per il computer della Gemini. La ROM in particolare era costituita da core rope, ‘corde’ di nuclei di ferrite in cui la presenza o assenza di un filo all’interno del nucleo magnetico produceva un diverso segnale elettrico che veniva letto come zero o uno dalla memoria. L’utilizzo delle core rope fu un grosso vincolo per i programmatori della NASA e dell’MIT. I programmi archiviati nelle core rope dovevano essere pronti mesi prima delle missioni per consentire la produzione e il test delle core rope stesse. Una volta realizzate, non vi era modo di alterarne il contenuto. I programmi dovevano essere perfetti e completati con ampio anticipo. Anche per la memoria approfondirò il discorso in uno dei post successivi di questa serie.

Un’altra vista dell’AGC

I circuiti integrati, forniti dalla Fairchild Semiconductor, erano realizzati con la tecnologia Resistor-Transistor Logic (RTL) in un contenitore flat-pack. Erano connessi tramite wire-wrap e tutto l’insieme era chiuso in contenitori in resina epossidica. La struttura dell’AGC era semplice e modulare: i circuiti erano raggruppati in due blocchi da 24 moduli ciascuno. Ogni modulo conteneva due gruppi di 60 flat-pack con connettori a 72 pin. Ciascun flat-pack conteneva due porte logiche NOR. Il blocco A conteneva i circuiti logici, le interfacce e l’alimentazione. Il blocco B la memoria e il clock di sistema. Ognuno dei blocchi era ermeticamente sigillato.

Problemi di produzione e test
La produzione dell’AGC mise a dura prova le capacità produttiva della Raytheon. Questa società era stata responsabile della produzione del computer utilizzato dai missili Polaris, ma la complessità del computer dell’Apollo si rivelò una sfida ben maggiore. La divisione che si occupò del progetto passò da 800 a 2000 dipendenti nel giro di un anno per poter gestire il tutto.

Il rapido aumento delle richieste, la sottostima dei requisiti per la produzione e problemi di affidabilità vari afflissero per lungo tempo la Raytheon. I cambiamenti apportati nel 1962 dall’MIT crearono i primi problemi: i costi stimati sulla base del riutilizzo delle apparecchiature e dei processi usati per il Polaris vennero più che raddoppiati dal cambio di componenti e di dimensioni della memoria richiesti. La NASA riscontrò anche problemi sui primi modelli prodotti durante i test di resistenza alle vibrazioni (dovuti a contaminazioni dei flat-pack). Ci furono problemi legati all’eccessivo tempo di propagazione dei segnali nelle interconnessioni: la soluzione fu usare connettori al nickel di nuova concezione, con un incremento dei costi di produzione di $500.000.

La continua ricerca dell’affidabilità portò alla scoperta di molti altri problemi. Tutti i lotti di produzione dovettero essere accuratamente verificati: venivano eseguiti test di resistenza a vibrazioni, accelerazioni, shock, temperatura, condizioni di vuoto, umidità e rumore (nel senso di rumore sui segnali elettrici). D.C. Frazer, uno degli ingegneri del progetto, disse poi: “l’affidabilità dell’AGC venne ottenuta con i soldi, molti soldi.”

3 Risposte to “Il Quarto Membro dell’Equipaggio (2) – L’Hardware”

  1. FeFeSofT Says:

    Mi sono messo comodo e mi sono armato di pazienza … dedica pure tutte le puntate che vuoi a questo interessantissimo argomento

    Salutoni FeFe

  2. I read several articles about AGC, but this summary is the most clear and exhaustive (even better than Wikipedia).

  3. raghnor Says:

    Thanks a lot. Wikipedia is usually a good starting point for technical topics. Have you got any chance of reading the whole AGC series of posts? Do you have any suggestions?

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...