HISTOIRE DU G 60

ASPECTS TECHNIQUES

LE LOGICIEL

Retour

Brève introduction

a/ Le G 60 est fondamentalement un système à multiprogrammation

Le central peut demander par une coupure la mise au travail de l’un des nombreux éléments qui lui sont connectés (entrée-sortie, mémorisation, calcul ) , garnir les registres d’adresse de cet élément et lui envoyer une directive d’exécution puis se libérer à la recherche d’un autre travail. Pendant ce temps, l’élément exécute sa directive en accédant directement à la mémoire centrale; puis à la fin, fournit un mot qualitatif de 24 bits analysable en central par des branchements.

Plusieurs programmes (ou branches de programmes lancées par des coupures spéciales: SIMU ) peuvent se dérouler en même temps et, le cas échéant, provoquer au niveau du central, de chaque élément concerné et aussi de séquences protégées ( éléments virtuels ), la gestion de files d’attente matérialisées par les chaînes de reprise.

Les instructions correspondant aux 4 fonctions ci-dessus sont codées en machine ( code A ) dans un mot de 24 bits avec la structure suivante:

- T.O. 2 bits

- TOC 5 bits

- FA   2 bits

- Adresse 15 bits

L’adresse autorise pour la mémoire centrale une capacité maximale de 32768 mots soit environ 98 KOctets.

Cycle mémoire = 10 ms

b/ Les éléments connectés, regroupés en 5 classes correspondant à des niveaux de priorité décroissants, sont les suivants:

# Classe 0 : Le pupitre (voir plus loin le paragraphe d )

# Classe 1 : Les 4 éléments de traitement, originalités du Gamma 60,

et particulièrement le traducteur qui transforme » les données d’un format à un autre grâce à des clichés, sortes de microinstructions.

# Classe 2 : Les éléments de mémorisation, à savoir:

Les unisélecteurs ( jusqu’à 10 ) regroupant jusqu’à 48 dérouleurs de bande magnétique ( ruban ), avec lecture dans les 2 sens.

Longueur : 730 m Durée: 6 mn 20 s Capac.: 1,6 MM
1100m 9 mn 30s 2,4MM

Les tambours ( jusqu’à 4 ) adressables

temps d’accès moyen : 10 ms capac.: 26 KM

# Classe 3 : Les éléments d’entrée-sortie ( jusqu’à 20 ), connectés à un multiplexeur ( 2 maximum ), à savoir:

Les lecteurs & lecteurs-perforateurs de cartes ( jusqu’à 4 ) :300 cartes / mn

Les imprimantes ( jusqu’à 8 ), avec simple ou double entraînement : 300 ou 600 lignes / mn

Les lecteurs-perforateurs de bande

Les machines à écrire, etc..

c/ Compte tenu

-de la nouveauté et de l’originalité de son architecture,

-des nouvelles technologies utilisées ( logique à transistors, mémoire à tores, dérouleurs de bandes )

-du facteur d’échelle important à partir du Gamma 3 Tambour

il était naturel d’insister sur la sécurité.

Sans parler de tous les contrôles statiques et ajustements technologiques dans les armoires et les appareils et éléments, qui rendront les mises au point lourdes, on insistera sur la présence de contrôles dynamiques sur les transferts et les traitements, matérialisés par des bits supplémentaires dans les mémoires, les registres et les canaux, et nécessitant des dispositifs de correction généralement programmés.

En particulier, le mot mémoire M compte 27 bits

M ( 27 ) = mot ( 24 ) + clé ( 3 )

les canaux mémoire utilisent un bit de plus en contrôle d’imparité.

Les contrôles sont faits après chaque transfert et chaque directive, et après une relecture pour les éléments de classe 2 et 3.

d/ Un composant essentiel du Gamma 60 est le pupitre, interface obligé de l’ensemble Gamma 60 avec son utilisateur durant son exploitation -- sans négliger les visualisations sur les armoires et appareils et les manipulations des fichiers amovibles ( cartes, bandes, liasses, bobines ) -- .

Le pupitre physique comporte 4 zones:

La zone 1 assure la mise sous tension et hors tension du central et des éléments ( poussoirs et visualisations ).

La zone 2, en plus de la visualisation des incidents « clé », permet la gestion manuelle du central:

-- choix d’un type de marche ( normal, arrêt sur chaque instruction, arrêt sur profil instruction, pupitre )

-- en marche pupitre, utilisation de poussoirs permettant la lecture et l’écriture d’un profil mot dans les registres centraux ou en mémoire à une adresse choisie, adresse et profil étant affichés en binaire par des commutateurs.

-- visualisation de tous les registres du central, y compris ceux qui concernent la mémoire et les éléments connectés.

-- présence de 6 commutateurs testables par programme.

La zone 3, en face du pupitreur, est la zone d’exploitation normale du Gamma 60. Elle comporte:

-- un bloc de 8 fois 8 voyants, allumés ou éteints par des directives pour suivre évolution de 8 programmes !

-- un ensemble machine à écrire - lecteur-perforateur de bande auquel sont

associés clavier de commande et visualisations, ensemble pouvant fonctionner:

- soit en autonome avec les commandes du clavier,

- soit en tant qu’élément du Gamma 60 -- un poussoir « Intervention opérateur » qui permet

- le lancement initial du Gamma 60

- ultérieurement, le lancement d’un programme de gestion recevant puis exécutant des ordres issus du pupitreur via le clavier de la machine à écrire.

- réciproquement, le programme peut envoyer une directive à l’opérateur particulièrement pour demander une manipulation sur un appareil ou une action sur détection d’incident grave.

La zone 4 regroupe la visualisation de l’état de fonctionnement de tous les éléments et appareils connectés.

Le pupitre est le seul élément capable d’effectuer une interruption de programme prioritaire, les autres éléments devant se contenter de répondre à une sollicitation du central par programme.

Logiciel de programmation

Principes

Le calcul scientifique utilisait depuis quelque temps les concepts de programme, de sous-programme, ceux de langages (langage machine binaire, langage machine symbolique, et langage synthétique: Fortran en préparation ). Ainsi étaient apparues, sur cartes ou sur bande perforée et ensuite sur support magnétique, des bibliothèques:

-- de sous-programmes standards

virgule flottante, double précision, fonctions trigonométriques,...

-- de programmes scientifiques standards

calcul matriciel, équations linéaires,...

-- de programmes utilisateurs

-- de programmes de base, auxiliaires des programmes utilisateurs

chargement, traduction, assemblage, vidage ( perforation, listings )

des programmes et sous-programmes,...

Le Gamma 3 Tambour ( comme ses concurrents ) a utilisé la même approche pour les problèmes de gestion, comme le feront tous ses successeurs jusqu’à aujourd’hui.

Il faut noter que pour une nouvelle famille d’ordinateurs et donc le Gamma 60, il est nécessaire de recréer et éventuellement de compléter toutes ces bibliothèques de base.

Évolution du logiciel de base du G 60

Sorti du néant, ce logiciel allait se construire à partir du code d’instruction (code A) et des performances physiques des différentes parties, et en profitant des expériences acquises surtout sur le Gamma 3 Tambour -- ce dernier étant utilisé d’ailleurs pour créer sous forme adéquate ( code A, nombres,... ) des supports lisibles sur Gamma 60 ( bandes, cartes ) .

Pour simplifier, on distinguera 3 phases de développement:

1° -- Création progressive d’un logiciel de base élémentaire mais complet

matérialisé sur bandes programmes

2° -- Exploitation du précédent et création d’un logiciel plus élaboré

3° -- Exploitation et extension du logiciel précédent

Ce logiciel sera subdivisé d’après les différentes fonctions réalisées:

a -- Contrôle et réception du Gamma 60 physique

b -- Exploitation du Gamma 60

c -- Programmation du Gamma 60

d -- Programmes standards

e -- Contrôle et réception du logiciel de base

Le logiciel de base fourni au client avec le matériel est b + c + d ;

les divisions a et e , malgré leur importance, ne seront pas analysées dans cette brève histoire du temps.

.

Langage de base & code B

Le premier langage de programmation, nommé code B, est la traduction instruction par instruction du code machine ( code A ); il utilise une structure fixe, favorable à la perforation des cartes et à leur contrôle visuel.

-- colonnes complémentaires pour les commentaires du programmeur

-- adjonction d’un numéro de ligne, nécessaire pour les renvois.

-- valeurs symboliques parlantes pour T.O., C.C., F.A.:

exemples: ARIT, PUPI, SIMU, STOP, ADD, CMP,...

-- adresses (et longueurs, constantes,... ) en décimal

Une précision sur la fonction d’adresse ( FA )

- s pour substitution

- r : relatif (instruction) ou m : mémoire (donnée )

au lieu de la différentielle du code A

.Le transcodage ou traduction en code machine d’un programme ainsi écrit est élémentaire; mais à moins de créer un programme monolithique en adressage différentiel, il est plus commode pour le programmeur de découper son programme en fractions de fonctions spécifiques; il procède alors en 3 étapes:

-- écriture de chaque fraction sans définir les liaisons entre elles

-- implantation du programme en mémoire

-- ajout des paramètres de liaison ( adresse mémoire ).

L’exécution des 2 dernières étapes peut être confiée à un programme (assemblage), à condition dans la première étape de donner pour chaque fraction ( sous-programme ) une valeur symbolique à chaque entrée et sortie.

Sous-programmes

Le sous-programme s’écrit instruction par instruction en code B , mais avec des extensions qui ont demandé une nouvelle feuille de programmation, qui rajoute quelques facilités telles que la possibilité d’introduire les constantes ( clichés, nombres,...) sous une forme pratique codée en colonne T.

Le sous-programme est alors transposé, vérifié, au besoin corrigé, listé et rangé dans une bibliothèque - généralement sur bande - sous forme d’un sous-programme assemblable, comportant des instructions et mémoires en code A ( avec des vides ) et une table d’inconnues et de repères destinée à l’assemblage.

Chaque Gamma 60 possède plusieurs bibliothèques de sous-programmes dont celle fournie par C.M.B. comportait début 61 plus de 300 composants concernant principalement des fonctions dérouleur, lecteur, imprimante et mathématiques.

Assemblage & code C

Un programme est obtenu par la liaison de sous-programmes (et de zones ) par le programme d’assemblage, exploitant:

-- une bibliothèque de sous-programmes

-- une feuille descriptive écrite en code C.

Le programmeur liste et numérote les sous-programmes - y compris les zones de manoeuvre ( tampon, zone de tri,...) - avec pour chacun la liste de ses inconnues ( X ). Il effectue alors pour chacune la liaison SPy.Xn = SPz.Rm ou l’affectation SPy.Xn = constante dans les colonnes assembl.; il affecte au moins au premier sous-programme dans les colonnes distr une adresse d’implantation en mémoire .

Si toutes les inconnues sont affectées, le programme après assemblage sera exécutable, à condition d’avoir, dans les colonnes distr., indiqué le repère entrée du programme. et lié l’inconnue sortie du programme à un repère symbolique.

Mais la plupart du temps, un certain nombre d’affectations ne pourront pas être faites à l’assemblage, comme par exemple un numéro d’appareil, un nombre d’articles,...ou même une liaison vers un sous-programme résident du superviseur. Les inconnues correspondantes recevront dans les colonnes distr. un symbole approprié.

Si le programme est divisé en phases, chacune sera implantée et leur chargement prévu par une liaison au symbole de distribution approprié.

Le programme d’assemblage, en tenant compte des implantations prévues, condensera les sous-programmes et les zones, effectuera les liaisons et les affectations validées et constituera une table des inconnues avec leurs symboles.

L’étape suivante consiste, en fournissant au programme les valeurs manquantes (distribution), à le transformer en U.T. ( unité de traitement ) exécutable en machine.[ voir plus loin l’exploitation].

Autres langages

Pour le développement des applications de gestion, il n’y eut pas d’autre langage que celui d’assemblage, pour les raisons suivantes :

-- les utilisateurs durent utiliser le code B à l’origine

-- la vie du Gamma 60 fut courte

-- le développement du logiciel de base se concentra sur l’exploitation

-- la définition d’un langage de haut niveau comme COBOL en était à ses balbutiements

-- un tel langage s’adaptait mal, surtout à l’époque, à l’architecture matérielle et logicielle du Gamma 60.

Par contre, pour les applications scientifiques, fut développé et exploité l’ALGOL 60, lointain ancêtre de PASCAL. Le développement d’un langage plus sophistiqué, destiné à surclasser FORTRAN d’I.B.M., dut être abandonné en cours, en raison de sa complexité et de sa nouveauté, mais surtout faute d’utilisateurs.

Logiciel d’exploitation

L’exploitation du Gamma 60 est fondée sur sa gestion par l’opérateur pupitre ou pupitreur au moyen d’ordres

Après l’intervention opérateur ( I.O. ) et la réponse « Que désirez-vous? »,les ordres codés sur 4 lettres, sont entrés avec les paramètres adéquats; ils sont contrôlés puis exécutés si corrects et terminés par le message « Ordre exécuté ».

Ces ordres sont tout à fait similaires aux commandes MSDOS de MICROSOFT.

Étape préliminaire

Pour l’histoire, on signalera les premiers pas du logiciel sur le prototype en début 1960.

-- sur la zone 2 du pupitre ( voir ci-dessus ), introduction en binaire, exécution en pas-à-pas, visualisations de contrôle de miniprogrammes tels que:

- introduction par le lecteur de bande du pupitre

- mise en service de la machine à écrire pour remplacer progressivement les fonctions matérielles ( lancement, visualisations, incidents ) par l’ébauche d’un superviseur-moniteur et obtenir un journal de bord.

-- introduit par bande, miniprogramme lecteur de cartes binaires et impression sans édition

-- entrée par cartes binaires, créées en Gamma 3 Tambour, du programme initial de transposition code B-code A, avec contrôle de vraisemblance, listing et utilisation du traducteur.

-- mise en service du tambour

-- mise en service des dérouleurs

-- création de bibliothèques de programmes sur tambour et sur bande

-- introduction et exploitation du programme d’assemblage

-- création d’un programme de transcodage inverse code A-code B permettant, en fonctionnement pas-à-pas, d’extraire sur imprimante sous forme plus lisible chaque instruction avec ses registres et ses opérandes, en suivant la logique du central ( simus, chaînes de reprise ).

-- pendant ces dernières étapes, mise en oeuvre progressive des fonctions du superviseur-moniteur qui sera nommé G.G.Z.

Gestion générale Zéro ou G.G.Z.

La gestion G.G.Z. est fournie sur la bande programme dite ruban Z; elle

comporte plusieurs parties découpées en segments:

-- un superviseur devant résider en début mémoire, soit:

- la table des appareils et éléments et

- la table des unités de traitement ( U.T.) en cours ( voir ci-dessous )

- l’intervention opérateur avec retour vers l’opérateur:« Que désirez-vous? »

A la mise sous tension, l’intervention opérateur lance l’initialisation, modulable par le positionnement de commutateurs testables.

- l’initialisation ( tests appareils-éléments, effacements mémoires,...)

- le chargement en mémoire des segments de programme

- les zones-tampons appropriées

- la tête du programme incidents appelée par la détection dans un mot qualitatif, du bit 24 regroupant les incidents graves nécessitant en principe l’intervention du pupitreur.

- une amorce pour le lancement et le retour des U.T.

- des sous-programmes de gestion et de correction bande, très utilisés

-- un programme d’analyse et de réparation d’incidents, dialoguant avec le pupitreur; celui-ci peut suivant le cas:

- faire faire une manipulation ( manque de cartes ou de papier, fin de bande )

- lancer, avec ou sans manipulation, un sous-programme de réparation situé soit dans l’U.T. en cours, soit dans un segment du superviseur

- bloquer le système en cas d’incident très grave et après intervention, relancer les U.T. interrompues.

-- un moniteur, situé sur le ruban Z, chargé d’exécuter les ordres frappés au clavier par le pupitreur. Leur nombre a varié de 30 en 1960 à 46 en 1962

Fonctions réalisées:

- fonctions de la zone 2 du pupitre ( visualisation, forçage d’adresse, d’instruction ou de donnée, vidage ,...)

- fonctions élémentaires sur les appareils

- lancement d’un programme

Le logiciel de programmation ( voir plus haut ) comportant transposition, assemblage et programmes annexes ( introduction des cartes code B et C, états sur imprimante, rangement des résultats sur bande,...) est un constituant fondamental du logiciel G.G.Z.; il est complété par la distribution, chargée de transformer un programme issu de l’assemblage en programme personnalisé exécutable appelé unité de traitement ( U.T.); ce logiciel est chargé de distribuer au programme assemblé, les valeurs numériques prévues pour les inconnues y ayant reçu un code symbolique.

Ces paramètres, de différents types ( adresse mémoire, adresse tambour, numéro d’appareil ou d’élément, longueur de zone,... ), sont introduits soit par des ordres du pupitre, soit sous forme de cartes en code D2.

On constitue ainsi une bibliothèque d‘U.T. exploitables directement, en remarquant que tout est figé; en cas d’indisponibilité d’un appareil, il sera possible de modifier certains paramètres par ordre pupitre au moment du lancement.

La G.G.Z. est fournie avec :

-- une bibliothèque de sous-programmes standards ( fonctions dérouleurs, entrée cartes, vidages sur imprimante,..., et fonctions mathématiques )

-- une bibliothèque de programmes standards ( tris, interclassement, conversions bande - imprimante,...., et programmes scientifiques classiques ).

Gestion Générale Un ou G.G.U.

La G.G.U., destinée à remplacer la G.G.Z., a été conçue en recherchant à privilégier les aspects suivants:

-- Prolongement sans rupture des fonctionnalités de la G.G.Z..

-- Sécurité d’exploitation de la mémoire et des appareils utilisés dans chaque programme.

-- Tenue d’un journal d’exploitation complet et lisible, avec le minimum d’interventions de l’opérateur pupitre.

-- Planification des travaux ( enchaînement des phases dans une U.T., enchaînement des U.T. dans un job ).

-- Amélioration de la facilité et de la durée de création des travaux, grâce à d’importantes bibliothèques de sous-programmes et de programmes standards.

-- Amélioration de la gestion des incidents et mise en oeuvre de points de reprise.

-- Possibilité d’extensions ultérieures sans bouleversement.

-- Accélération de la vitesse d’exécution, possible par stockage sur tambour des ordres les plus fréquents.

Les fonctions du noyau résident du superviseur restent pratiquement les mêmes qu’en G.G.Z.; ( s’y ajoutent surtout les topogrammes de la mémoire et des appareils ). Sa capacité est de 3800 Mots, soit moins de 12 KOctets.

Le traitement des incidents a été perfectionné; on peut citer par exemple la possibilité de reprise incorporée dans les programmes de tri sur bandes.

La gestion des ordres s’est gonflée ( 91 ordres en fin 1963 ); sont introduits par exemple 10 ordres dérouleurs, 10 ordres de vidage bande sur imprimante et surtout 18 ordres de lancement, arrêt et reprise des programmes.; par exemple un ordre permettant avec 10 sous-ordres, de positionner, de lire, d’écrire, de rebobiner,... la bande

La gestion de l’exploitation des U.T., devient plus sophistiquée:

-- implantation fixe ou variable

-- lancement avec paramétrage en code D1 et mise en attente en cas d’indisponibilité de mémoire ou d’appareils

-- alimentation de programme interne à l’U.T. ( phase ) par un sous-programme standard incorporé

-- mise en oeuvre d’une gestion de bandes complète (contrôle, rebobinage,... )

-- possibilité d’incorporer dans une U.T. - généralement bande-bande - des points de reprise prévus par l’utilisateur; le rangement et le relancement éventuel par un ordre étant à la charge de la G.G.U.

La G.G.U. introduit l’unité de planification ( U.P. ) -- ou job -- correspondant à un ensemble d’U.T. -- ou job-steps -- effectuant un travail complet, comptable ou scientifique, depuis des données externes (cartes) jusqu’à des résultats imprimés exploitables par l’utilisateur.

Ce job peut être représenté par un graphe, dont les mailles orientées représentent les U.T. et les noeuds effectuent des regroupements et des lancements d’U.T. en simultanéité et/ou en alternative avec critères de validation.

La description de ce job s’effectue à l’aide du code D3.

L’ensemble des cartes D relatives à un job constitue une sorte de J.C.L.

Après la distribution, l’U.P., comme l’U.T., est stockée en bibliothèque de programmes exécutables, d’où elle pourra être exploitée par un des ordres de lancement.

A un niveau supérieur, le G.G.U. prévoit l’exploitation automatique des U.P..Ce logiciel procède en 3 étapes:

-- introduction du J.C.L. associé ( cartes B, C, D, E,....), contrôles, planification du travail en fonction de la disponibilité des appareils

et listing du planning proposé y compris les montages et démontages de bandes sur les dérouleurs.

-- exploitation de l’U.P. avec les paramètres introduits,

- soit en fonctionnement normal

- soit en mise au point, prévue à l’étape précédente par l’introduction de jalons et de vidages variés

. -- impression des résultats de l’étape précédente.

Un niveau ultime est la planification des travaux qui, à partir d’une bande programme contenant tous les travaux d’une application sous forme d’U.T. encore implantables et paramétrables, optimise l’exploitation de ces travaux pour un Gamma 60 particulier.

Ce niveau n’a certainement pas été exploité, ni même réalisé.

André Maitre

Retour