Le Gamma 3 est un calculateur électronique conçu par la Compagnie des Machines Bull et commercialisé à partir de 1952.

Initialement conçu comme accélérateur électronique pour les tabulatrices électromécaniques, à l'instar de l'IBM 604, il fut progressivement enrichi de nouveaux dispositifs jusqu'à devenir un ordinateur de première génération (Gamma AET, 1955, puis ET, 1957), plus précisément une machine Von Neuman à programme enregistré. Les termes d'ordinateur et d'informatique n'existant pas encore, Bull désigna le Gamma ET comme un « ordonnateur ».

Au cours des dix ans de sa carrière, cette machine considérée comme charnière permis la transition entre la mécanographie et l'informatique, et entre le calculateur et l'ordinateur.

Le Gamma 3 fût un succès commercial, avec plus de 1200 unités produites, faisant également de ce dernier le premier ordinateur produit à plus de .

À partir du début des années 1960, le Gamma 3 fut remplacé par trois modèles : le Gamma 10, destiné aux petites et moyennes entreprises ; le Gamma 30, de capacité intermédiaire ; et le Gamma 60, un très grand système à calcul parallèle.

Historique Jusqu'aux années 1950, la Compagnie des Machines Bull, à l'instar de son rival IBM, commercialise majoritairement des tabulatrices à carte perforée destinées à la gestion des stocks, la paye, et la comptabilité.

Ces tabulatrices réalisent les opérations arithmétiques via une série de roues de totalisation, incrémentées par un dispositif électro-mécanique. Seule l'incrémentation, et donc l'addition, est supportée; les soustractions et multiplications s'avèrent donc particulièrement lentes.

Afin d’accroître la vitesse de calcul, et donc de ne pas retarder la lecture des cartes perforées lors des opérations plus complexes, un accélérateur pouvant s'affranchir des limites électro-mécaniques devient nécessaire.

À partir de 1949, la Compagnie Bull s'intéresse aux tubes à vide pour leur vitesse de commutation par rapport aux roues totalisatrices et aux relais électromécaniques. Le calculateur est conçu à partir de circuits logiques comprenant environ 400 tubes, 8000 diodes au germanium et des registres de 48 bits constitués de lignes à retard électriques, afin de réduire la dépendance aux tubes électroniques, plus fragiles. L'ensemble est cadencé par une horloge à une fréquence de , une vitesse alors significativement supérieure aux de l'IBM 604, et plusieurs ordres de grandeur plus rapide que les dispositifs électromécaniques. La vitesse d'exécution pour l'addition de deux nombres binaires varie entre 0,6 ms et 10 ms, avec une vitesse moyenne de 2 ms. Le Gamma 3 est connecté à la tabulatrice par un câble branché en lieu et place de son tableau de connexion (instructions du programme); le programme est donc installé sur le Gamma 3 plutôt que sur la tabulatrice.

Néanmoins, si le Gamma 3 est programmable par un tableau de connexion amovible analogue à ceux des tabulatrices, il n'en reste pas moins un périphérique de ces dernières et non l'inverse. De plus, bien qu'électronique, binaire et programmable avec un jeu d'instruction Turing-complet, le Gamma 3 ne pouvait fonctionner par programme enregistré et sa programmation dépendait du tableau de connexion.

Une première évolution vers l'ordinateur apparaît avec le Programme Par Carte (PPC), apportant la possibilité d’exécuter un programme chargé par carte perforée, plutôt que câblé sur un tableau de connexion. Ce concept est également expérimenté par IBM avec l'extension CPC (Card Programmed Calculator) ajoutée au 604. Néanmoins, bien que cela permette le fonctionnement de programmes de taille arbitraire plutôt que limités au nombre de connexions du tableau de branchement, le programme n'est toujours pas exécuté en mémoire vive, sa vitesse d'exécution dépend donc de la vitesse de lecture des cartes perforées du programme.

Le Gamma 3 connaît une nouvelle mise à jour en 1955 avec l'apparition d'un tambour magnétique d'une capacité de (64 ou 128 pistes de 8 blocs de 16 mots de 48 bits), quantité remarquable pour l'époque. Jusqu'à trois instructions pouvaient être stockées par mot sur le tambour, permettant ainsi d'accueillir ou instructions. Cette nouvelle version était appelée Gamma 3 A.E.T (Armoire Extension Tambour, ou Extension Tambour).

Les programmes étaient enregistrés dans la mémoire de l'A.E.T. par groupes de 48 instructions, appelés 'séries'. Lorsque nécessaire, une série était transférée du tambour vers un groupe de mémoire intermédiaire agissant comme un cache d'instructions, ce qui permettait à l'ordinateur de récupérer chaque instruction une par une et de les transférer dans son registre d'instructions. Il est intéressant de noter que les instructions, en particulier les adresses, pouvaient être modifiées dans l'unité arithmétique de l'ordinateur, tout comme n'importe quelle autre donnée. Cette capacité a ouvert la voie plus tard à l'adressage indirect ou indexé. Le cache d'instructions a également résolu le problème rencontré avec l'IBM 650, qui nécessitait une optimisation de l'agencement des instructions sur le tambour pour éviter que sa latence ne ralentisse l'exécution du programme.

Avec la possibilité de charger et d’exécuter des programmes en mémoire, le Gamma ET (Extension Tambour) devient le premier ordinateur français. La tabulatrice est désormais un périphérique d'entrée/sortie et le Gamma ET l'unité centrale. La mécanographie cède alors progressivement sa place à l'informatique pour le traitement de l'information. Le Gamma ET se positionne en concurrent de l'ordinateur IBM 650, de conception très similaire.

Le premier client à recevoir un Gamma 3 est le Crédit Lyonnais de Saint-Étienne en 1952. Le Gamma 3 et ET fut ensuite employé tant en informatique de gestion au sein de grandes entreprises, qu'en calcul scientifique, notamment au sein du CERN et CNRS alors naissants.

Bull ne traversa jamais l'Atlantique malgré son partenariat avec Remington Rand - Univac et la création d'une version "américanisée" disposant d'une alimentation électrique à .

Le Gamma 3 fût un succès commercial en Europe avec environ 1200 unités vendues, dépassant les ventes de l'IBM 650. Le Gamma 3 étendu se comparait très favorablement à son concurrent : l'espace mémoire était quatre fois plus grand et permettait de stocker douze fois plus d'instructions, tandis que la vitesse de traitement était généralement plus élevée. Ce succès a incité IBM à concevoir le modèle 1401 en réponse.

Organisation de la mémoire Le Gamma 3 comprend trois types de mémoires, toutes basées sur des mots de 48 bits ou de 12 caractères BCD

Le premier type est constitué d'un groupe de sept registres au cœur du processeur. M1 fait partie de la Mémoire Opérateur, il sert d'accumulateur et est lié au circuit d'addition-soustraction. M2 sert d'accumulateur auxiliaire pour les opérations en double précision (96 bits). M3 à M7 sont des registres à usage général dénommées Mémoires Banales. Le transfert entre ces mémoires se fait par M1. M0 est un registre spécial lié à M1 et non accessible au programmeur. vignette|Structure de l'ordinateur Gamma 3 selon la documentation originale. Des blocs de code et de données provenant du tambour alimentent les groupes de mémoire (moitié inférieure). Les trois premiers groupes (0, 1, 2) sont exécutables et forment les Séries. La Série 3 est attribuée au tableau de connexions, tandis que le Groupe 3 sert de tampon d'E/S. Le code machine d'une Série est ensuite extrait de la mémoire, décodé et exécuté (moitié supérieure). Outre ces registres génériques, le Gamma 3 comprend également six registres internes :

MC : Mémoire Comparaison. Ce registre contient le résultat d'une instruction de comparaison. MD : Mémoire Décalage. Ce registre de décalage est utilisé à la fois pour les opérations en BCD et arithmétiques. MS1 : Mémoire Signe. Stocke le signe actuel de l'arithmétique. Avec M1, MC et MD, ils forment ensemble l'opérateur du processeur. NL : Numéro de Ligne, qui serait aujourd'hui appelé le Compteur de Programme. RNL1 / RNL2 : Registre Numéro de Ligne, qui agit comme des registres de pile.

Afin de réduire le nombre de tubes électroniques, source fréquente de défaillances, les Mémoires Banales n'utilisent pas de bascules, mais des lignes de retard électriques.

Un second type de mémoire est appelé Mémoires Circulantes, qui agissent comme des tampons, car leur contenu est destiné à être échangé avec la mémoire tambour. Les Mémoires Circulantes, désignées de M8 à M15, sont implémentées à l'aide de lignes à retard magnétostrictives dans une armoire séparé dédié (l'Armoire ET). Ces huit mémoires sont regroupées par paires pour former quatre "groupes". Les groupes 0, 1 et 2 sont exécutables et désignés sous le nom de "séries", chaque série contenant un cache d'instructions de 48 instructions. Le panneau de connexion, s'il est utilisé, constitue la série 3. Cela sera utilisé au cours du cycle de vie de la machine pour fournir des extensions du jeu d'instruction.

Le Groupe 3 agit comme un tampon d'entrée/sortie. Une armoire complémentaire dénommée "Ordonnateur" (ORD) peut également être ajoutée, fournissant quatre groupes supplémentaires numérotés de 4 à 7, contenant des données mais sans possibilité d'exécution.

Enfin, la Mémoire Tambour sert de mémoire de masse, hébergeant à la fois du code et des données. Sur le Gamma 3, le code n'est pas exécuté depuis le tambour mais depuis les trois premiers groupes des Mémoires Circulantes (les séries). Bien que cela augmente la vitesse d'exécution, cela rend également les sauts de longue portée plus coûteux, car une page doit d'abord être transférée du tambour vers les mémoires MC à l'aide d'une instruction dédiée ("TB").

Le tambour est constitué d'un cylindre en duralium, long de 15 ou , tournant à environ . Il possède 64 ou 128 pistes de 8 blocs, chaque bloc contenant un groupe, permettant ainsi de stocker jusqu'à , soit . La densité d'enregistrement approchait 300 bits par pouce, utilisant la modulation de phase, ce qui était une prouesse à cette époque.

Jeu d'instructions vignette|Tableau de code du Gamma 3, permettant de transcrire les instructions en code machine. Ainsi, l'instruction CB se traduit en TO=1,AD=15 Une instruction Gamma 3 est constituée d'un mot de 16 bits composé de quatre chiffres hexadécimaux : un code d'opération (TO, Type d'Opération), une adresse (AD), un ordre de début OD, et un ordre de fin OF. Le champ TO spécifie le type général d'instruction, tandis que les trois autres champs agissent comme des paramètres. OD et OF définissent des positions, qui peuvent être soit des chiffres en mode binaire, soit des caractères en mode BCD. Un total de 29 mnémoniques forment le jeu d'instructions. vignette|Exemple de feuille programme. La première colonne affiche les sauts et leurs adresses de raccordement. Les colonnes suivantes montrent le numéro de ligne (NL), les instructions, le contenu du registre de décalage (MD) et le contenu des quatre premiers registres. Aucun assembleur, souvent appelé autocodeur à l'époque, n'existait pour le Gamma 3, encore moins de langages de haut niveau comme Fortran qui devaient encore être inventés. À la place, le programmeur devait d'abord créer un schéma du programme, le compléter avec des mnémoniques, convertir manuellement les mnémoniques en code machine en utilisant un tableau, puis écrire le code résultant sur une feuille de codage pour vérification avant de le perforer sur des cartes. Une fois le programme chargé dans la mémoire du tambour, le pupitre opérateur permettait au programmeur d'examiner et de déposer des données en mémoire, ainsi que de contrôler le flux du programme à des fins de débogage.