# Série IBM 700/7000

La série IBM 700/7000 était une série d'ordinateurs centraux (mainframes) fabriqués par IBM au cours des années 1950 et 1960.
La série incluait des architectures de processeurs différentes et incompatibles. Les 700s qui utilisaient des composantes électroniques basées sur des tubes électroniques ont été remplacés par les 7000s qui utilisaient des transistors.
Les 7000s, à leur tour, ont été remplacés par les IBM System/360 qui furent annoncés en 1964. Le 360/65, le premier System 360 assez puissant pour remplacer les IBM 7000, est devenu disponible en novembre 1965. Des difficultés rencontrées avec le système d’exploitation OS/360 et les coûts élevés de conversion des programmes ont amené les IBM 7000 à rester en service plusieurs années après l’introduction de la série 360.

## Architectures en bref

Les ordinateurs de la série 700/7000 utilisaient six façons différentes de coder les instructions et les données :
* la première architecture (IBM 701) utilisait des mots de 18 et de 36 bits ;
* l'architecture scientifique (IBM 704, IBM 709, IBM 7090, IBM 7094, IBM 7040 et IBM 7044) utilisait des mots de 36 bits ;
* l'architecture commerciale (IBM 702, IBM 705 et IBM 7080) utilisait des chaînes de caractères de longueur variable ;
* l’architecture de la série IBM 1400 et de l’IBM 7010 (IBM 7010) utilisait des chaines de caractères de longueur variable ;
* les ordinateurs décimaux (IBM 7070, IBM 7072 et IBM 7074) utilisaient des mots de 10 chiffres décimaux ;
* le superordinateur (IBM 7030 Stretch) utilisait des mots de 64 bits.
La série 700 utilisait des tubes électroniques alors que la série 7000 utilisait des transistors. Toutes les machines (comme les autres ordinateurs du temps) utilisaient des mémoires à tores magnétiques sauf les 701 et 702 qui utilisaient des tubes de Williams. Bien que les architectures diffèrent, les différents modèles partageaient certaines composantes électroniques et partageaient les mêmes périphériques. Les premiers périphériques étaient basés sur les appareils de mécanographie d’IBM. Les périphériques des derniers modèles provenaient de la série IBM 1400.
Les premiers ordinateurs étaient vendus sans logiciels. Lorsque les systèmes d’exploitation sont apparus, le maintien de quatre architectures différentes pour les ordinateurs centraux en plus de la série 1400 d’ordinateurs moyens est devenu un réel casse-tête pour IBM qui devait maintenir cinq ensembles de logiciels différents.
Les IBM System/360 ont combiné les meilleurs éléments des architectures des 7000s et des 1400s. Certains des modèles 360 offraient en option l’émulation en microcode des instructions des 7000s et des 1400 (qui fut d'ailleurs reconduite sur les 370!). Les IBM System/370 ont amélioré le processus d’émulation en le plaçant sous le contrôle du système d’exploitation, ce qui permettait d’utiliser l’émulation sans avoir à arrêter puis redémarrer l’ordinateur comme c’était le cas avec les 360.

## La première architecture (IBM 701)

Connue sous le nom de Defense Calculator (‘’calculateur de la Défense’’) alors qu’elle était en développement au laboratoire d’IBM à Poughkeepsie, cette machine a été dévoilée le 7 avril 1953 sous le nom de IBM 701 Electronic Data Processing Machine, nom qui sera par la suite abrégé à IBM 701.

### Format des données

Seuls les nombres entiers étaient traités dans cette architecture. Les nombres étaient enregistrés sur 36 ou 18 bits :
* le premier bit servait à coder le signe ;
* les bits suivants servaient à coder la valeur absolue du nombre en format binaire.
Cette représentation possédait l'inconvénient d'une double représentation possible d'un même nombre : le zéro qui pouvait être codé +0 ou -0. Le comparateur de valeurs devait donc tenir compte de ce cas particulier, et reconnaître leur égalité.

### Format des instructions

Les instructions étaient enregistrées sur 18 bits et ne contenaient qu'une adresse d'opérande :
* le premier bit indiquait si l'opérande occupait un demi-mot ou un mot ;
* les 5 bits suivants étaient utilisés par le code de l'opération ;
* les 12 bits suivants indiquaient l'adresse de l'opérande.

### Registres

L'IBM 701 ne possédait que 2 registres accessibles au programmeur :
* un accumulateur d'une longueur de 38 bits (incluant 2 bits de débordement) ;
* un registre multiplicateur-quotient de 36 bits.

### Mémoire

Cette machine disposait d'une mémoire électrostatique de 72 tubes de Williams. Chaque tube avait une capacité de 1024 bits, ce qui donnait une capacité totale de 2048 mots de 36 bits chacun. Chaque tube avait un diamètre de 8 cm. La mémoire pouvait être augmentée à un maximum de 4096 mots de 36 bits par l'addition d'un autre groupe de 72 tubes de Williams ou en remplaçant les tubes de Williams par une mémoire à tores magnétiques.
Les mots de 36 bits pouvaient contenir 6 caractères de 6 bits chacun.
Les tubes de Williams ainsi que les tores magnétiques avaient un cycle de mémoire de 12 millisecondes. Les tubes de Williams devaient être refroidis, ce qui nécessitait l'introduction de cycle de refroidissement dans le fonctionnement de l'IBM 701. Une addition nécessitait 5 cycles de 12 millisecondes, incluant deux cycles de refroidissement. Une multiplication ou une division nécessitait 38 cycles (456 millisecondes).

## L’architecture scientifique (IBM 704/709/7090/7094)
### Format des données

Les nombres entiers étaient représentés par un bit de signe suivi de la valeur absolue de l'entier en format binaire.
Les nombres en virgule flottante en simple précision étaient représentés par un bit de signe, un exposant de 8 bits et une valeur de 27 bits.
Les nombres en virgule flottante en double précision étaient représentés par un bit de signe, un exposant de 17 bits et une valeur de 54 bits. Ces nombres ont été introduits avec l’IBM 7094.
Les caractères alphanumériques étaient représentés par un code de 6 bits (le code BCD). On pouvait donc placer 6 caractères dans un mot de 36 bits.

### Formats des instructions

Il existait deux formats d'instruction appelés type A et type B. La plupart des instructions étaient de type B.
Les instructions de type A possédaient, en séquence :
* un code d'opération de 3 bits ;
* un décrément de 15 bits (le décrément contenait souvent un opérande immédiat qui servait à modifier le résultat de l’opération ; il pouvait aussi définir plus précisément le code d’opération) ;
* trois bits tag (7 bits tag pour le 7094) ; les bits tag, lorsqu’ils étaient activés, désignaient des registres d’index dont les contenus étaient soustraits de l’adresse pour former une adresse effective ;
* une adresse de 15 bits (ce champ pouvait contenir l’adresse de l’opérande ou un opérande immédiat).
L'implémentation des instructions nécessitait que l'un des bits 2 ou 3 du code d'opération soit 1 pour distinguer les instructions de type A et B. Cette contrainte réduisait à 6 le nombre possible d'instructions de type A. L'une des instructions (l'instruction STR, code d'opération 101) n'a pas été implantée avant l'IBM 709.
Les instructions de type B possédaient, en séquence ;
* un code d'opération de 12 bits (le deuxième et le troisième bits devaient être 0 pour les distinguer des instructions de type A) ;
* un flag de 2 bits ;
* quatre bits inutilisés ;
* trois bits tag ;
* une adresse de 15 bits.

### Registres

Cette architecture avait :
* un registre accumulateur de 38 bits (incluant deux bits de débordement) ;
* un registre multiplicateur-quotient de 36 bits ;
* trois ou sept registres de diminution de 15 bits (le registre de diminution était une sorte de registre d'index dont le contenu était soustrait de l'adresse de base au lieu d'y être ajouté ; plusieurs registres de diminution pouvaient participer à une même instruction : les 3 (ou 7) bits tag de l'instruction indiquaient lesquels des registres de diminution devaient participer à l'instruction ; lorsque plusieurs registres participaient à l’instruction, une opération OU était appliquée aux contenus des registres pour former une valeur qui était par la suite soustraite à l’adresse de base) ;
* un indicateur ‘’sense’’ qui permettait une interaction avec l’opérateur à travers les commutateurs et les lumières de la console de l’opérateur.

### Mémoire

704
* 4 096, 8 192 ou 32 768 mots de 36 bits
709, 7090, 7094, 7094 II
* 32 768 mots de 36 bits

## L’architecture commerciale (IBM 702/705/7080)

L’IBM 702 et l’ IBM 705 étaient semblables et le 705 pouvait exécuter plusieurs programmes du 702 sans modifications, mais les deux ordinateurs n’étaient pas complètement compatibles.
L’IBM 7080 était une version transistorisée du 705, avec diverses améliorations. Pour assurer la compatibilité avec le 705, il pouvait fonctionner en mode de compatibilité 705 I, 705 II, 705 III ou en mode de complète compatibilité.

### Format des données

Les données étaient représentées par des chaînes de caractères de longueur variable terminées par des marques d’enregistrement.

### Format des instructions

Une instruction occupait 5 caractères :
* un caractère pour le code de l’opération ;
* quatre caractères pour l’adresse.

### Registres

702
* Deux accumulateurs (A & B) de 512 caractères chacun
705
* Un accumulateur de 256 caractères
* Quatorze unités de stockage auxiliaire de 16 caractères
* Une unité de stockage auxiliaire de 32 caractères
7080
* Un accumulateur de 256 caractères
* 30 unités de stockage auxiliaire de 512 caractères
* 32 unités de stockage de communications de 8 caractères

### Mémoire

702
* 2 000 à 10 000 caractères dans des tubes de Williams (en incréments de 2 000 caractères)
* Cycle mémoire d’un caractère : 23 microsecondes
705 (modèles I, II, or III)
* 20 000, 40 000 ou 80 000 caractères
* Cycle mémoire d’un caractère : 17 ou 9,8 microsecondes
7080
* 80 000 ou 160 000 caractères
* Cycle mémoire d’un caractère : 2,18 microsecondes

## L’architecture de la série 1400 et de l’IBM 7010

L’architecture commerciale de la série IBM 700/7000 a inspiré la série d’ordinateurs de taille moyenne IBM 1400. Cette série d’ordinateurs a connu beaucoup de succès et a, à son tour, inspiré le développement de l’ordinateur central IBM 7010 qui est une version agrandie de l’IBM 1410.
Le lancement comporta de nouveaux périphériques rapides comme l'imprimante 1403 (1959 - 600 lignes par minute pour son modèle 2, puis plus tard 1 100 lignes par minute pour son modèle 3) ou le lecteur-perforateur de cartes 1442 (400 cartes par minute).

### Format des données

Les données étaient représentées par des chaînes de caractères de longueur variable terminées par un wordmark (une marque de mot).

### Format des instructions

Les instructions étaient de longueur variable : 1, 2, 6, 7, 11, ou 12 caractères.

### Registres

Aucun registre pour les calculs, toutes les instructions opéraient directement sur la mémoire.

### Mémoire

100 000 caractères.

## L’architecture décimale (IBM 7070/7072/7074)

Les IBM 7070, IBM 7072 et IBM 7074 étaient des ordinateurs décimaux avec des mots de longueur fixe. Ils utilisaient des mots de dix chiffres comme l’ancien et plus petit IBM 650. Cependant, leur jeu d’instructions était différent de celui du 650.

### Format des données

* Longueur d’un mot : 10 chiffres décimaux plus un signe.
* Code des chiffres : le code deux parmi cinq.
* Nombre en arithmétique flottante (optionnelle) : deux chiffres d’exposant.
* Chaque mot possédait un de trois indicateurs suivants : plus, moins ou alpha :
** le plus et le moins indiquaient que le mot contenait un nombre ;
** l’alpha indiquait que le mot contenait une chaîne de 5 caractères où chaque caractère était codé par deux chiffres (par exemple, 61 = A, 91 = 1).

### Format des instructions

Toutes les instructions occupaient un mot de 10 caractères :
* les deux premiers caractères contenaient le code de l’opération ;
* les deux caractères suivants indiquaient un registre d'index ;
* les deux caractères suivants contenaient un champ de contrôle ;
* finalement, les quatre derniers caractères contenaient l’adresse.

### Registres

Tous les registres avaient une longueur d’un mot et étaient adressables comme des mots de mémoire :
* trois accumulateurs avec les adresses 9991, 9992 et 9993 (99991, 99992 et 99993 sur le modèle 7074 étendu) ;
* un compteur ordinal uniquement adressable à partir de la console système avec l’adresse 9999 (99999 sur le modèle 7074 étendu) ;
* 99 registres d'index avec les adresses 0001 à 0099.

### Mémoire

* 5000 à 9990 mots de 10 chiffres décimaux (versions standards) ;
* 15000 à 30000 mots de 10 chiffres décimaux (version IBM 7074 étendu).
* Temps d’accès à la mémoire : 6 microsecondes (IBM 7070/7072), 4 microsecondes (IBM 7074).
* Temps pour une addition : 72 microsecondes (IBM 7070), 12 microsecondes (IBM 7072), 10 microsecondes (IBM 7074).

## La série IBM 700 (années 1950 et tubes électroniques)

* IBM 701, le premier ordinateur d’IBM, introduit en 1952
* IBM 702, ordinateur commercial, introduit en 1953
* IBM 704, ordinateur scientifique, introduit en 1954
* IBM 705, ordinateur commercial, introduit en 1954
* IBM 709, ordinateur scientifique, introduit en 1958

## La série IBM 7000 (années 1960 et transistors)

* IBM 7010, version haut de gamme de l’ordinateur IBM 1410, introduit en 1962
* IBM 7030, superordinateur, introduit en 1961
* IBM 7040, ordinateur scientifique, introduit en 1963
* IBM 7044, ordinateur scientifique, introduit en 1963
* IBM 7070, ordinateur décimal, introduit en 1960
* IBM 7072, ordinateur décimal, introduit en 1962
* IBM 7074, ordinateur décimal, introduit en 1961 (utilisé par le Internal Revenue Service américain en 1962)
* IBM 7080, ordinateur commercial, introduit en 1961
* IBM 7090, ordinateur scientifique, introduit en 1959
* IBM 7094, ordinateur scientifique, introduit en 1962
* IBM 7094 II, ordinateur scientifique, introduit en 1964
C’est à l’aide d'un IBM 7090 qu’en 1962, Dan Shanks et John Wrench calculèrent (en l’espace de 8 h 43 min) les 100 000 premières décimales du nombre pi, avec un algorithme exploitant l’identité :
$\pi =24\arctan {\frac {1}{8}}+8\arctan {\frac {1}{57}}+4\arctan {\frac {1}{239}}$.
L’IBM 7700 Data Acquisition System n’était pas membre de la série IBM 7000, malgré son nom et son annonce le 2 décembre 1963.