DESCRIPTION DU GAMMA 3
par Victor Thévenet (fondateur de la FEB)
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:
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 |
OD + OF |
VC |
8 |
Variantes Comparaison et signe |
TO= 0 |
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 |
1980 |
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