Les premiers ordinateurs
HCF: Halt & catch Fire!
Historique
Root » Serveurs » Electro-ménager » Halt & Catch Fire

Mnemonic HCF

Les premiers ordinateurs avaient des instructions (opcodes) d'une longueur d'un mot: le premier demi-mot (nibble) indiquait le type d'opération (additionner, lire, comparer,...), le second demi-mot l'opérande: immédiat, adressage direct, adressage via un régistre, etc. Toutes les combinaisons n'étaient évidemment pas possibles. Ces codes impossibles étaient utilisés pour des fonctions de test lors de la fabrication et l'assemblage. Un code servait par exemple à lire et écrire chaque position en mémoire (qui est une fonction très utile lors du test d'un nouvel ordinateur pour localiser les cours-circuits et les éléments de mémoire déficients). Un des codes servait de repeat, c'est à dire une instruction qui se répète à l'infini.

Les opcodes recoivent un mnémonique: ADD, MOVE, JUMP, les programmeurs ne doivent plus mémoriser les opcodes mais utilisent les codes mnémoniques. Le listing du programme se compose ainsi d'un tableau avec des instructions et des opérandes.


Tores de ferrite


Les ferrites sont montées sur un cadre


et les cadres sont empilés

Les premiers ordinateurs travaillaient avec des "mots" (des instructions ou des données) qui n'avaient pas nécessairement 8 bits comme maintenant. Des mots de 13, 14 ou 16 bits étaient courants dans les premiers ordinateurs. Chaque ordinateur était fabriqué individuellement, souvent selon les désirs du client et coutait une fortune. Les ordinateurs actuels travaillent avec des mots de 8 bits (un octet) mais utilisent le pipelining: 32, 64 ou 128 bits sont lus en une fois, même si l'ordinateur n'a besoin que de 16 bits. Les bits surnuméraires sont peut-être nécessaires lors d'une opération suivante.

On utilisait des mémoires à ferrite, il s'agit de petites perles de ferrite (appellées tores), un materiau facilement magnétisable. Il y a 4 fils qui passent par chaque ferrite: deux fils de sélection (X et Y, horizontal et vertical), un fil de lecture (Sense) qui passe en diagonale par toutes les tores et un fil d'écriture (Inhibit). Les systèmes plus récents combinent le fil de lecture avec le fil d'écriture.

Pour lire un bit, on envoie un courant de lecture dans les fils X et Y correspondants. La ferrite qui se trouve au croisement reçoit un courant juste assez fort pour faire basculer sa polarisation. Ce basculement peut être détecté par le fil de lecture. Après lecture, il faut remagnétiser la ferrite, car la lecture détruit la magnétisation.

Une tore de ferrite = 1 bit. Le cadre à gauche a une capacité de 30 × 30 bits. On enpile les cadres pour obtenir la longueur des mots utilisés dans l'ordinateur (dans notre exemple 13 bits). Op pouvait placer jusqu'à 1000 bits par cm2. L'électronique de commande avait besoin de nettement plus de place. Un grand ordinateur pouvait avoir 600kilobit de mémoire qui se trouvait dans une armoire séparée de la grandeur d'un frigo américain.

Les mémoires à ferrite étaient fabriquées manuellement (on utilisait des couturières qui venaient de perdre leur emploi dans l'industrie manufacturière). Les mémoires à ferrite étaient utilisées jusque dans les années 1970. Le module de commande d'Apollo utilisait un ordinateur de bord avec une mémoire de 4k et 4100 circuits intégrés élémentaires (nor gates). Les tores étaient pratiquement insensibles aux rayons cosmiques.

Les fils étaient particulièrement fins. Le courant de lecture/écriture doit être important, environ 400mA, car le fil ne forme pas une boucle (qui concentre le champ magnétique). En fonctionnement normal, l'énergie est dissipée par tous les fils. Avec l'instruction décrite ci-dessus (self repeat), ce sont continuellement les même fils qui sont utilisés. Ils surchauffent et fondent. Cette instruction mortelle a reçu le mnémonique HFC: Halt & Catch Fire (lien vers Wikipedia anglais). Dès que l'ordinateur était mis en production, on éliminait cette instruction mortelle...