Archivio per MIT

Il Quarto Membro dell’Equipaggio (7) – L’Executive

Posted in Storia, Tecnologia with tags , , , on 1 aprile 2012 by raghnor

Alcuni dei moduli che costituivano l’AGC

L’AGC come abbiamo visto era un computer RTC (real time), multitasking e capace di interagire con una serie di interrupt. Il fatto di essere multitasking significa che era in grado di gestire l’esecuzione di diversi programmi (job) contemporaneamente. A questi programmi veniva assegnata una priorità: in ogni momento l’AGC eseguiva il programma con la priorità più alta. Un altro modo di definire l’AGC è che si trattava di un priority-interrupt system.

Per quanto riguarda il multitasking, questa era una tecnica fondamentale per un sistema real time, che si trovava a gestire operazioni diverse nello stesso momento. Ovviamente l’AGC aveva un solo ‘processore’ e quindi il multitasking era più un effetto generato dalla velocità di esecuzione e dalla lentezza della percezione umana: i job venivano in realtà eseguiti uno alla volta, ma la velocità con cui venivano eseguiti e il continuo passaggio da un job all’altro in base alla priorità creavano l’illusione dell’esecuzione contemporanea.

Il compito di orchestrare il multitasking, col suo balletto di job prioritizzati, era compito principalmente dell’ Executive. Questo programma può essere considerato il sistema operativo dell’AGC.

Continua …

Annunci

Il Quarto Membro dell’Equipaggio (6) – Lo sviluppo del software

Posted in Storia, Tecnologia with tags , , on 25 marzo 2012 by raghnor

Un ‘piccolo’ listato

Lo sviluppo del software per l’AGC fu una delle sfide più difficili ed inizialmente sottovalutate della NASA e dell’MIT. Le difficoltà iniziali, che misero a rischio la possibilità del progetto di avere successo nei tempi dettati dalla sfida di Kennedy, portarono però alla fine alla definizione di una serie di procedure e tecniche che diedero i loro frutti al di là del Progetto Apollo.

All’inizio degli anni 60 la definizione di un ciclo di sviluppo (raccolta dei requisiti, progettazione, codifica, test e manutenzione) non erano appieno apprezzati dai programmatori. Persino all’interno di una elite come quella dei programmatori dell’MIT. L’inesperienza della NASA nella gestione di simili progetti, ben diversi dal punto di vista gestionale da quelli della realizzazione su grande scala di capsule, razzi, etc., contribuì ai problemi.

Uno di primi passi per cercare di ottenere il livello di controllo necessario sul processo fu la creazione di 3 commissioni che si occupassero delle gestione integrata di hardware e software:

  • L’Apollo Spacecraft Configuration Control Board, che controllava e valutava le modifiche richieste per i veicoli e anche per i sistemi di guida e navigazione

  • Il Procedures Change Control Board, si occupava dei requisiti di progettazione di ogni richiesta che impattava l’interfaccia utente

  • Il Software Configuration Control Board, si occupava delle modifiche richieste al software vero e proprio

Continua …

Il Quarto Membro dell’Equipaggio (5) – Input/Output

Posted in Storia, Tecnologia with tags , , , on 18 marzo 2012 by raghnor

Le periferiche di I/O dell’AGC

Con questo post concludo la trattazione dell’hardware dell’AGC, occupandomi dei dispositivi e delle modalità di Input / Output (I/O). A partire dalla settimana prossima passeremo ad occuparci del software.

Con l’espressione Input / Output (abbreviata in I/O) si fa riferimento a come un computer scambia informazioni col mondo esterno. Genericamente i dispositivi che permettono questo scambio sono detti periferiche: tastiere, mouse, schermi, stampanti, dischi di vario tipo e formato sono tutti periferiche.

Nel piccolo mondo dell’AGC (che alla fine gestiva ‘solo’ il PGNCS) la complessità dell’I/O era decisamente inferiore a quella dei computer general purpose di oggi e le periferiche erano di tipo molto diverso: la piattaforma inerziale, i razzi, i radar, il DSKY e gli interruttori dei pannelli di controllo. Tutti dispositivi che non richiedevano di certo la capacità di trattamento dei dati (in termini di velocità e capacità) di un computer del giorno d’oggi.

Le modalità di I/O utilizzate dall’AGC erano 3: i canali di I/O (I/O channels), i counters e le word a 15 bit. I dati non venivano scambiati in grandi quantità e la velocità richiesta non era un fattore significativo per le performance dell’AGC. Come vedremo, molte delle operazioni di I/O erano relative alla modifica di un singolo bit.

Continua a leggere

Il Quarto Membro dell’Equipaggio (4) – Gli Interrupt

Posted in Storia, Tecnologia with tags , , on 11 marzo 2012 by raghnor

Il Mainframe IBM System/360s

Anche questa settimana il post è super tecnico. Approfondiremo ulteriormente alcuni aspetti dell’architettura dell’AGC. In particolare inizieremo a capire che tipo di computer era e come gestiva una particolare metodologia, ancora in uso, per la comunicazione e la risposta a determinati eventi.

Dal punto di vista concettuale, l’AGC era molto diverso dai mainframe in uso negli anni 60 (ad esempio nei centri di calcolo della NASA stessa). Questi ultimi erano chiamati anche sistemi di calcolo a batch (a lotti): eventuali errori che portavano al blocco del sistema non erano considerati particolarmente gravi. Si poteva riavviare con calma il tutto e far ripartire il batch.

Ma l’AGC era un real-time computer (RTC), chiamati anche reactive computer: computer per cui esistono stringenti vincoli di reazione e risposta agli eventi. Un RTC deve poter reagire a determinati eventi in tempi dell’ordine dei millisecondi o anche meno. La terminazione non controllata di programmi, la mancata gestione di una richiesta, l’arresto del sistema sono tutte condizioni NON accettabili. Pensate ad un blocco irrimediabile dell’AGC durante una manovra, ad esempio durante la fase di allunaggio (ricorda nulla? Allarme 1202?!).

Un’altra importante caratteristica dell’AGC (su cui tornerò prossimamente) era quella di essere un computer multitasking, ovvero in grado di eseguire diverse attività allo stesso tempo: questo non in senso letterale ovviamente. Una serie di attività (job) venivano eseguiti ciascuno per un determinato intervallo di tempo, alternandosi nell’utilizzo delle risorse di calcolo dell’AGC. La percezione per un osservatore esterno (come l’utente) era la contemporaneità nell’esecuzione. Ne facciamo esperienza tutti i giorni usando i PC.

Continua a leggere

Il Quarto Membro dell’Equipaggio (3) – La memoria

Posted in Storia, Tecnologia with tags , , on 4 marzo 2012 by raghnor

Una simpatica vecchietta …

La foto con cui si apre questo post probabilmente qualcuno l’avrà già vista in rete (ne ho trovate versioni sia a colori che in bianco e nero). In essa si vede una operaia dai capelli bianchi intenta a lavorare. Era una dipendente della Raytheon, il suo compito era quello di preparare le ‘core rope’, la ROM dell’AGC. Seguendo schemi ben precisi realizzava le porzioni di memoria relative al codice scritto dai programmatori dell’MIT: per questo motivo alcuni di questi avevano dato al prodotto finito il nome di LOL Memory, Little Old Lady Memory. Tra poco approfondirò l’argomento memoria dell’AGC. Lasciate che dedichi questo post alle ‘nonnine’ che hanno contribuito a portare l’uomo sulla Luna.

Nella sua versione finale, l’AGC arrivò ad avere 2048 (2K) word di memoria riscrivibile e 36,864 (36K) di memoria in sola lettura. Come già detto nel post scorso le word erano lunghe 16 bit (15 bit di dati e 1 bit di parità). Un bel incremento rispetto alla iniziale stima dell’MIT di sole 256 word di RAM e 4K di ROM!

La continua mancanza di spazio creò costantemente problemi nello sviluppo dei programmi: parte della responsabilità va addossata alla NASA che, solo molto tardi, fu in grado di fornite specifiche dettagliate (chissà perché mi sembra una storia già sentita ed ancora valida …). La quantità di ROM richiesta venne cambiata 18 volte, quella della RAM ‘solo’ 16.

Continua a leggere

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

Posted in Storia, Tecnologia with tags , , on 26 febbraio 2012 by raghnor

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.

Continua a leggere

Il Quarto Membro dell’Equipaggio (1) – La Storia

Posted in Storia, Tecnologia with tags , , , , on 18 febbraio 2012 by raghnor

Il “quarto membro dell’equipaggio”

Nel corso della trattazione di qualche settimana fa sui sistemi di guida e navigazione non avevo toccato un argomento fondamentale: il Computer Subsystem (CSS). Ovvero l’Apollo Guidance Computer (AGC). L’argomento è veramente complesso, la documentazione in merito vastissima e ammetto che finora avevo girato al largo nel timore di non riuscire a realizzare dei post all’altezza. Bando alle ciance, ho deciso di provarci. Oggi cominciamo a vedere qualche scampolo di storia dell’AGC.

L’AGC fu un pezzo talmente fondamentale del programma Apollo, così fortemente integrato con i veicoli, così utile ed utilizzato dall’equipaggio da essersi meritato il titolo (che ho usato anche io per questi post) di “fourth crew member”, “il quarto membro dell’equipaggio”.

L’AGC fu un computer digitale progettato e costruito appositamente per il programma Apollo, installato a bordo sia del Command Module che del Lunar Module. Era il cuore del PGNCS. Gli astronauti interagivano coll’AGC tramite il DSKY (DiSplay KeYboard), un pannello che riuniva una tastiera, una serie di display numerici e alcune spie luminose. E’ importante notare come l’AGC fu uno dei primi computer digitali, in cui cioè venivano utilizzati circuiti integrati (all’epoca una tecnologia nuovissima, appena uscita dai laboratori di ricerca). Il secondo modello (Block II), utilizzato nei voli con equipaggio, fu costruito con 2800 circuiti integrati, tutti con 2 porte NOR a 3 ingressi. Per chiarire le proporzioni: nell’estate del 1963 il 60% della produzione statunitense di circuiti integrati venne utilizzata per la costruzione dei prototipi dell’AGC.

L’AGC venne progettato dall’Instrumentation Laboratory (IL) del MIT, sotto la guida di Charles Stark Draper. La progettazione dell’hardware fu opera di Eldon C. Hall. L’architettura del sistema fu opera di J.H. Laning Jr., Albert Hopkins, Ramon Alonso e Hugh Blair-Smith. La ditta che poi realizzò l’AGC fu la Raytheon.

Continua …