Compagnie des machines Bull 

Gamma 3

1952-~1960


DESCRIPTION DU GAMMA 3
par Victor Thévenet (fondateur de la FEB)

g3-ouvert.jpg (12380 octets)

Description
- 1) structure
- 2) échanges d’informations
- 3) description générale
    - les mémoires, les entrées-sorties, le bus, la mémoire programme
- 4) description des instructions
   - les branchements, - les instructions de servitudes - instruction d’entrées-sorties  - transfert de données - les instructions arithmétiques
- 5) configurations commerciales
- 6) la mise au point des programmes:
- 7) vitesse de calcul

        Le Gamma 3 est le premier "CALCULATEUR ÉLECTRONIQUE" conçu par Bull pour la mécanographie à cartes perforées. Commercialisé en 1952, la première machine est livrée en mars 1953 au Crédit Lyonnais de Saint Étienne.
Dans sa version originale, c'est donc une machine secondaire ,ou "esclave" qui apporte une très grande capacité de calcul à la tabulatrice ou à la PRD Il a la capacité de pouvoir exécuter des calculs pendant le temps qui s'écoule entre 2 lectures de cartes consécutives, ce temps est de 0,5 seconde.

1] - Structure:
        Le Gamma 3 a une structure que l'on pourrait aujourd'hui qualifier de traditionnelle. Elle comprend:
                . des mémoires de données
                . des entrées-sorties
                . un "BUS"
                . une mémoire pour le programme
                . un processeur constitué de registres spécialisés pour:
                        . pointer la prochaine instruction à exécuter "NL" (Numéro de Ligne)
                        . isoler les données à traiter "FILTRE", en identifiant le début et la fin d’une donnée
                        . exécuter les transferts entre mémoires, les décalages, les opérations arithmétiques et logiques. Le cœur du processeur est la mémoire opérateur qui intègre un "additionneur-soustracteur".
        Mais le Gamma 3 n’a pas de parallélisme, il est intégralement séquentiel au niveau du bit.

2] - Échanges d’informations avec la machine principale (tabulatrice ,  PRD ou ULP):

Le Gamma 3 communique avec la machine principale par:
        . 1 câble dit «général» qui transmet tous les asservissements.
        . 1 ou 2 câbles selon la configuration; ils se connectent sur le carter des «tableaux de connexions» spécifiques à chaque application. Ce carter comporte pour chaque connecteur un petit tableau de connexion de 180 plots qui peuvent être reliés par des fiches aux plots de la tabulatrice (ou PRD). Ces câbles sont appelés couramment «boas».
Ces connexions permettent:
        . d'envoyer au Gamma 3 des données exclusivement numériques et de recevoir des résultats, exploités par la tabulatrice.
        . d'envoyer des commandes pour sélectionner des séquences de programme
spécifiques aux données.

3] - Description Générale:

        31- Les Mémoires:
Les informations traitées sont:
        . exclusivement numériques
        . codées en BCD, sur 4 bits, y compris le 0.
        . conservées dans des mémoires «CIRCULANTES» numérotées de 1 à 15.
        . une mémoire gère 48 bits, soit 12 caractères.
        . un cycle de mémoire dure environ 170 microsecondes.
        . la mémoire n° 1 «M1» comporte un additionneur-soustracteur séquentiel, elle est appelée la mémoire opérateur. L'additionneur-soustracteur est à deux entrées et une sortie; cette sortie revient sur l'une des entrées pour constituer la boucle circulante de la mémoire opérateur; l'autre entrée reçoit les données en provenance de l'une des mémoires banales, elles sont acheminées par le BUS.
        . la mémoire n° 2 «M2» peut être associée à la «M1» pour l'exécution de multiplications et de divisions étendues
        . les autres mémoires sont appelées banales.
        - toutes les mémoires sont à « condensateurs ».


32 - Les ENTRÉES-SORTIES:

g3_bs-pc.jpg (10957 octets)                Le Gamma 3 est connecté à une machine à cartes perforées, soit la tabulatrice, soit la P.R.D, dont l'architecture est parallèle pour les caractères, mais séquentielle pour la représentation de la valeur de ces caractères; il en résulte une structure particulière des entrées/sorties du Gamma 3. Le programme doit être inhibé pendant le temps (important) des entrées/sorties.

        Les "introducteurs" permettent l'entrée de 12 caractères par mémoire. Ils sont sous le contrôle de la tabulatrice qui commande l'introduction "CINÉMATIQUE" de façon autoritaire dans les mémoires. Il est donc impératif de ne pas exécuter d'instruction pendant le temps de "de chargement cinématique des mémoires" qui dure du
point 9 au point 12 du cycle de la tabulatrice.

        Les "extracteurs" permettent d'extraire les 12 caractères des mémoires et de les obtenir au tableau de connexion de la tabulatrice, celle-ci commande l'extraction de façon autoritaire; il est donc impératif d'arrêter les calculs du Gamma 3 du
point 9 au point 12.

Affectation des entrées-sorties aux mémoires:

n° des INTRODUCTEURS: 1 2 3 4 5 6
Mémoires réceptrices: 2 3 4 5 6 7

ou

1          
n° des EXTRACTEURS:

1

2

3

4

Mémoires sources:

3

4

7

6

ou

1

2

5

 

        L'activation des entrées-sorties et leur affectation aux mémoires sont réalisées par des commandes au niveau du tableau de connexion de la machine principale.
NB: une instruction du Gamma 3 permet aussi d’entrer des données contenues dans les totalisateurs de la tabulatrice.

        33 - Le BUS:

        Le BUS relie toutes les mémoires entre elles et celles-ci avec les introducteurs et extracteurs.
        Les introducteurs et extracteurs sont affectés à 1 ou 2 mémoires, le choix est fait par la machine principale, qui commande les entrées-sorties.
        Les transferts entre mémoires banales transitent par la M1. .
        Le Bus a aussi la particularité de pouvoir alimenter les deux entrées parallèles de l'additionneur soustracteur, l'une venant d'une mémoire banale, l'autre de la mémoire opérateur. La sortie de l'additionneur est intégrée à la M1.

        Le BUS comporte un dispositif d'insertion et de suppression des zéros, de façon à ce que ceux-ci représentés par le code BCD <10> en mémoires banales, ne soient pas codés dans la mémoire opérateur.

34 - LA MÉMOIRE PROGRAMME:

        La technologie disponible pour mémoriser les instructions des programmes propres aux applications est le TABLEAU de CONNEXION AMOVIBLE du Gamma 3.
                Le programme n'est pas "enregistré", il est affiché.
                Le tableau permet d'afficher 64 instructions, numérotées de 0 à 63.
        Les instructions sont à "une adresse", l'adresse implicite est celle de la "mémoire Opérateur" (M1).
                Les instructions comportent 4 éléments
                        . le Type d'Opérations <TO>
                        . l'ADresse <AD>
                        . l’Ordre Début <OD>
                        . L’Ordre Fin <OF>
NB: Ordre Début et Ordre Fin, complètent l'adresse et constituent: soit un filtre qui permet d'isoler des caractères BCD en mémoires soit de définir l'adresse d'une instruction.
        Chaque éléments d'une instruction sont codées en binaire sur 4 bits.

        L'instruction à exécuter est sélectionnée par le n° de ligne fourni par le registre <NL>; équivalent de l' "Instruction Pointer" actuel. Il est incrémenté de 1 après chaque instruction, sauf si une instruction de <saut> le charge d'un nouveau n° de ligne.
        Un distributeur de codes (de 0 à 15) est disponible au tableau
        Le code adéquat est relié par fiche aux "TO, AD, OD, OF".


4] - Description des Instructions:

                - L’UNITÉ de PROGRAMME: reçoit et exécute séquentiellement les instructions, c'est le processeur du Gamma 3

                41 - les variantes: sont équivalentes aux "jumps" actuels, ces instructions permettent de contrôler le déroulement du programme, en chargeant le registre <NL> du n° de ligne de l'instruction suivante à exécuter.

Il y a plusieurs types de variantes:

Type de branchement

nombre d’instructions disponibles

Événements de commande

codes

définition du n° de ligne (NL)

VPM (*)

16

"Variantes Point Machine" déterminé par AD + OF

TO= 0

OD + OF

VS

2

Variantes Systématiques
équivalentes aux "GOTO".

TO= 0
AD= 0

OD + OF

VC

8

Variantes Comparaison et signe

TO= 0
AD= 1

OD + OF

VR

32

Variantes à Relais elles exécutent le saut de ligne selon un ordre ou l'absence d'ordre de la machine principale.

TO= 0

AD= 0 à 15

OD + OF

        (*) - Au nombre de 16, elles permettent de synchroniser le programme avec le cycle de la machine principale. Elles sont bloquantes jusqu'au moment où le cycle atteint le point programmé, elles effectuent alors un saut à la ligne de programme souhaitée.


                42 - Instructions de servitudes:

Nom de l’instruction

Fonction

Utilisation

codes

AMD

Altération de la Mémoire Décalage

Le registre <MD> indique l'OD de la M1 et permet de la filtrer.
L'<AMD> modifie cet OD pour l'utilisation de M1 dans les opérations ultérieures.

TO = 2

OD --->MD

ZB

remise à Zéro mémoire Banale

AD = N° de la mémoire à mettre à zéro
OD et OF définissent les positions de mémoire

TO = 3

KB

Constante en mémoire Banale

AD = N° de la mémoire
OD = position de mémoire
OF = valeur de la constante numérique

TO = 4


                - 43 - Instruction d’entrée de données

Nom de l’instruction

Fonction

Utilisation

codes

IS (**)

Introduction Statique

AD = N° de la mémoire réceptrice
OD et OF définissent les positions de mémoire.

TO = 5

        (**) - Le Gamma 3 par cette instruction va à travers les circuits et les fiches du tableau de connexion de la tabulatrice explorer des totalisateurs et introduire leurs contenus en mémoire. Cette introduction ne peut être réalisée que pendant les points <d'entre carte>, lorsque les totalisateurs sont statiques.

  44 - Instructions de transfert de données:

Nom de l’instruction

Fonction

Utilisation

codes

BO

transfert de mémoire Banale vers la mémoire Opérateur

AD = N° de la mémoire émettrice

OD et OF = filtrage de la mémoire Banale

TO = 6

BS

transfert de mémoire Banale vers la mémoire Signe

AD = N° de la mémoire émettrice

(la mémoire Signe est un dispositif.)

TO = 7

OB

transfert de mémoire Opérateur vers mémoire Banale

AD = N° de la mémoire réceptrice
OD et OF = filtrage de la mémoire Banale

TO = 8

CN

ComparaisoN

Comparaison de la M1 avec la MB filtrée définie par AD OD OF.
Le résultat est exploité par les VC, et il est maintenu jusqu'à la comparaison suivante.

TO = 9


                45 - Les opérations d’addition et de soustraction:

Nom de l’instruction

Fonction

Utilisation

codes

AN

AdditioN

addition d’une mémoire banale filtrée à la mémoire opérateur
  - AD = N° de la mémoire Banale
  - OD et OF = filtrage de la mémoire Banale
nb: l’addition en mémoire opérateur est réalisée dans les positions définies par le filtrage

TO = 10

SN

SoustractioN

une mémoire banale filtrée est soustraite de la mémoire opérateur
  - AD = N° de la mémoire Banale
  - OD et OF = filtrage de la mémoire Banale
Le résultat est toujours obtenu en valeur ABSOLUE

TO = 11


                46 - Les multiplications:

Nom de l’instruction

Fonction

Utilisation

codes

MR

Multiplication Réduite

le multiplicateur doit être en mémoire opérateur (la M1) cadré à droite.
le multiplicande est en mémoire banale, mais il doit être cadré de telle façon que son OD soit égal à l’OF du multiplicateur. il est défini par AD, OD, OF
Le produit est en M1

TO = 12

La multiplication est une succession d'additions contrôlée de la manière suivante:
        1- l’OD est transféré dans la MD
        2- test des unités de la mémoire opérateur (du multiplicateur):
            3- si elles ne sont pas nulles:
                . le multiplicande est additionné
                . les unités du multiplicateur sont décrémentées de 1
                . retour au test n°2
            4- si elles sont nulles:
                . la mémoire opérateur est décalée d'une position à droite
                . la MD est décrémentée de 1
                    5- test de la MD: =0 ?
                        . si MD <> 0: retour au test n°2
                        . si MD = 0: L'opération est terminée
Le produit est en mémoire opérateur, il est de 11 chiffres au maximum.

Nom de l’instruction

Fonction

Utilisation

codes

MC

Multiplication Complète

Même principe que la MR, mais la M2 est associée à la M1 pour former une mémoire opérateur de 24 positions.
le multiplicateur, 12 chiffres maximum, est placé en M2 cadré à droite.
le multiplicande, 11 chiffres maximum est placé en mémoire banale,
Le produit, 23 chiffres maximum, est en M1-M2, (les unités en M2.)

TO = 14


                47 -
Les divisions:

Nom de l’instruction

Fonction

Utilisation

codes

DR

Division Réduite

Le dividende est placé en mémoire opérateur (la M1), cadré à droite, il est de 10 chiffres au maximum
Le diviseur est placé en mémoire banale, cadré à gauche, il est défini par AD, OD et OF
Le quotient est dans la partie droite de M1, son nombre de chiffres est égal à la valeur de OD
Le reste est dans la partie gauche de M1.

TO = 13


La division est une succession de soustractions contrôlée de la manière suivante:
        1- l’OD est transféré dans la MD
        2- comparaison entre M1 filtrée (le dividende) et MB filtrée (le diviseur)
        3. si M1 est plus grand ou égal
                . le diviseur est soustrait du dividende
                . la position de droite de M1 est incrémentée de 1
                . retour au test n°2
        4- si M1 est plus petit que MB:
                . M1 est décalé d'une position sur la gauche
                . MD est décrémentée de 1
        5- test de la MD: = 0 ?
                . si MD <> 0: retour au test n°2
                . si MD = 0: L'opération est terminée
NB: il faut:
        . s'assurer que le diviseur n'est pas nul avant de la lancer
        . gérer la virgule
        . gérer le signe des opérations si le dispositif n'est pas présent.

Nom de l’instruction

Fonction

Utilisation

codes

DC

Division Complète

Même principe que la DR, mais la M2 est associée à la M1 pour former une mémoire opérateur de 24 positions
Le dividende, de 22 chiffres au maximum, est placé en mémoire M1 et M2 (poids faibles en M2).
Le diviseur, de 12 chiffres maximum, est placé en mémoire banale
Le quotient est en M2
Le reste en M1

TO = 15

 

5] - Configurations Commerciales:

Identification des configurations
Les configurations se définissent par un code structuré de la manière suivante: nombres de: Mémoires, Introducteurs, Extracteurs, lignes d'instruction.

Configurations

Standard

AEP (1)

Nombre de mémoires

de 4 à 7

jusqu'à 15

Nombre d'introducteurs

de 3 à 6

 
Nombre d’extracteurs

de 2 à 4

 
Nombre de lignes d'instruction

de 32 à 64

jusqu'à 128

(1) AEP "Armoire d'Extension Programme"

exemples de
configurations
Mémoires Introducteurs Extracteurs Lignes
- minimum

4

3

2

32

- courante

7

6

4

64

- maximum

15

6

4

128


6] - La Mise Au Point des Programmes:

Le client disposait pour la mise au point des programmes Gamma 3 de deux outils:
. un dispositif du Gamma 3 permettait de le faire fonctionner en PAS à PAS. Ce dispositif était surnommé le "titilleur".
. un petit oscilloscope permettait de lire le contenu des mémoires, des tops groupent les bits visualisés en caractères codés en BCD.


7] - Vitesse de Calcul:

La fréquence de base de l'horloge est de 281 KHz
Toutes les instructions "courantes" sont basées sur le défilement d'une mémoire entière au travers de l'additionneur/soustracteur ce qui constitue une opération élémentaire telle que: le décalage d'un caractère, l'addition, la comparaison etc...

De ce fait, la base de temps à retenir est le temps de défilement complet d'une mémoire. Ce temps est de l'ordre de 170 microsecondes, pendant lequel une instruction peut traiter un nombre de caractères allant de 1 à 12.

Le temps de chargement d'une instruction est de 520 µs. L'addition de 2 nombres de 12 chiffres chacun, sera réalisée en 170 µs auxquelles il faut ajouter le temps nécessaire aux cadrages éventuels (un décalage de 6 positions (caractères) dure 1 ms).

Répartition des temps au cours d'un cycle de la machine principale: le temps nécessaire aux entrées/sorties est le temps mis par la tabulatrice pour lire les informations sur une carte qui est aussi le temps pour les imprimer. Soit 293 ms. sur un "cycle mécanique" de 400 ms. Le temps disponible pour effectuer les calculs est de 107 ms.
Le temps minimum d’exécution d'une instruction est de: 0,6 ms.
en moyenne il est de 2 ms
au maximum de 10 ms.

- COMPARAISON avec un microprocesseur type 8088 de 8 Mhz
Ces temps sont purement internes aux 2 machines, (sans entrées/sorties), ils prennent en compte toutes les opérations élémentaires de servitude, telles que Mov, Inc, Loop, etc... Nous rappelons que les processeurs du type 8088 ont un niveau de parallélisme de 8 bits pour le BUS et de 16 bits pour les Registres.

1952
Gamma 3

1980
- 8088

rapport

Addition de 2 nombres
de 11 chiffres

680 µs

160 µs

4,25/1

Multiplication de
6 par 5 chiffres

5.700 µs

250 µ

23/1

 

 

© 1999 Victor Thevenet