Maintenant que nous avons bien préchauffé le four cérébrale avec la première partie de cette série de dossiers visant à découvrir les entrailles de la Megadrive (partie consacrée au processeur graphique Texas Instrument TMS9918), nous allons continuer tranquillement notre exploration en s'attaquant au coeur de la machine : son processeur centrale, le Motorola 68000.
[Voir l'image]
Ici aussi je vais essayer d'être le plus explicatif possible et vous proposer un maximum d'analogies pour que le fonctionnement de cette puce vous soit plus facile à comprendre.
----------------------------------
1- Analogie :
Dans la première parti du dossier, pour définir le fonctionnement du processeur graphique, je vous parlais d'un ensemble de caméras, magnétoscopes, cassettes VHS, technicien, listing et armoire de stockage. Le processeur centrale, dans mon exemple, était représenté par le technicien.
Son rôle? Aller chercher dans l'armoire de stockage les cassettes VHS pour alimenter les magnétoscopes, les positionner au bon moment pour que la ces derniers puissent diffuser la séquence vidéo nécessaire au jeu de l'acteur. Il s'occupera aussi de diffuser la musique du film qu'il est en train de réaliser en direct sous nos yeux et encore quelques petites taches multiples dont nous ne parlerons pas ici.
Heureusement pour notre pauvre technicien, tout à été prévu par la production et il possède donc une liste de chose à effectuer en séquence précises dans un temps précis en fonction d’éléments (prévisibles ou pas) précis.
Au départ, notre pauvre opérateur attend bien sagement que le direct commence. Il n'a rien à faire jusqu'au moment ou le réalisateur du show lui ordonne d'envoyer le générique...
----------------------------------
2- Le BIOS :
Maintenant que le rôle du processeur est bien défini (par le rôle du technicien), nous allons parler du BIOS qui ordonne la mise en route du premier processus (la première instruction). Dans notre analogie, le BIOS est représenté par le réalisateur qui n'aura qu'une seule et unique mission : lui donner le top générique (quel feignant !!!).
Premièrement, que signifie BIOS? Et bien, tout simplement, ce sont les initiales de l’anglicisme "Basic Input Output System" (système élémentaire d'entrées/sorties).
Le BIOS est en fait un petit programme, très simple, ayant pour but d'initialiser électroniquement les composants d'un système informatique et d'ordonner au processeur centrale d'effectuer sa première tâche. Cette tâche est toujours la même : vérifier la zone de la cartouche insérée et aller y chercher la première instruction destinée au processeur.
Pour bien comprendre son rôle, imaginez votre voiture (ou moto/scooter, c'est comme vous voulez). Si rien n'est intercalé entre le moteur et votre clé de contact, comment pourrait bien démarrer votre véhicule? C'est pour cela qu'il existe le démarreur (ou lanceur) qui sert à forcer le moteur (alors inerte et sans but) à se lancer et à tourner. Et bien le BIOS est le démarreur de la console, tout simplement.
Au tout début de la Megadrive, il n'y avait pas de BIOS intégré à la carte mère. Il se trouvait directement sur la cartouche du jeu. Mais très vite, les ingénieurs de SEGA posèrent une petite mémoire en lecture seule (ROM pour Read Only Memory) de 2Ko (vous savez désormais à quoi ce chiffre correspond) à coté du processeur directement sur le circuit imprimé de la console.
----------------------------------
3- Explications :
Tout comme un être humain, le processeur possède de la mémoire répartie en zones. Ces zones mémoires, très petites, se nomment des registres et servent à stocker une donnée temporairement pour pouvoir la manipuler par la suite. Le processeur de la Megadrive, le Motorola 68000 possède 8 de ces registres pour les adresses et 8 pour les données, ayant la possibilité de stocker des nombres jusqu'à 32bits par 2 sections de mots 16bits (ce qui vaudra les initiales ST, pour Sixteen/Thirty-two, pour 16/32, aux ordinateurs de la gamme Atari qui en sont également équipés). Ce processeur est donc capable de traiter des instruction 32bits mais demande plus de ressources en raison d'un bus d'entrées uniquement en 16bits. À la bonne heure, la Megadrive n'ira pas plus loin que ces 16 petits bits, donc, pas de soucis !
[Voir l'image]
Il possède aussi ce que l'on appel une ALU (Arithmétique and Logic Unit ou unité arithmétique et logique en français) qui lui sert à faire des opérations mathématiques sur les nombres et des comparaisons d'états de bits. Cette
ALU est composé d'un très grand nombre de composants miniaturisés à l'extrême et formant des structures électroniques complexes basées sur des réseaux de portes logiques (je vous laisse vous renseigner sur le sujet, on est pas la pour manger trop d’électronique non plus hein?).
[Voir l'image]
Toutes ces fonctions internes sont cadencées par une horloge externe, extrêmement précise exprimée en Hz (Hertz) offrant un état haut (1) et un état bas (0) dans un signal carré.
[Voir l'image]
1Hz correspondant à 1 alternance haute/basse en 1 seconde (c'est très lent), si le processeur de la Megadrive est cadencé par une horloge à 7,6MHz, cela signifie donc qu'il alterne 7,6 millions de fois un état haut/bas en 1 seconde (ca commence à être très rapide) !!!
Ces fonctions sont également toutes affublées d'un code binaire (unique à chaque instruction) qui, au finale représente un "jeu d'instruction" permettant de savoir quelle fonction utiliser et à quel moment. Si le processeur possède 200 fonctions, il y aura 200 codes de fonctions. Bon, le 68000 n'en possède que 82 alors...il y aura 82 codes d'instructions (un pour l'addition, un pour la soustraction,...). Sachant qu'il faut 7 bits pour compter jusqu'à 82 (si, si, vérifiez maintenant que vous savez faire), le jeu d'instruction sera encodé sur 8bits (oui, on arrondi à l'octet).
Bien, concrètement, comment notre pauvre petit technicien peut il arriver à exécuter son travail en fonction de toutes ces informations? Et bien grâce à son listing détaillé gracieusement offert par la production du show, tout simplement. Ce listing, c'est le programme du jeu contenu sur la cartouche.
Une fois que le BIOS à lancé le générique (le fameux logo SEGA qui apparaît toujours en premier) et lancé la première instruction pour mettre en branle tout le bastringue, notre petit processeur va exécuter sagement la liste des choses à faire, en séquence et surtout en cadence ! Un coup d’horloge, une instruction, c'est aussi simple que cela !
On va lui demander d'aller chercher les tiles dans la cartouche pour les poser dans la mémoire vidéo, on va lui demander d'additionner une valeur contenue dans un emplacement mémoire avec celle d'une autre contenue dans un autre emplacement, on va lui demander de comparer un résultat avec une autre valeur contenue encore ailleur dans la mémoire,... bref on va lui demander tout un tas de choses... Et pour qu'il puisse s'en sortir l'ami processeur stockera des valeurs, des résultats, des adresses mémoires,... dans ses propres registres !
Par exemple pour réaliser l'opération mathématique ((A+B)-(C+D))*(E+F), il va agir comme suit (on appellera les regitres 1, 2,3,... pour simplifier) :
- aller chercher A
- stocker A dans registre 1
- aller chercher B
- stocker B dans registre 2
- additionner registre 1 et registre 2
- stocker le résultat dans registre 3
- aller chercher C
- stocker C dans registre 1
- aller chercher D
- Stocker D dans registre 2
- additionner registre 1 et registre 2
- stocker le résultat dans le registre 4
- aller chercher E
- stocker E dans registre 1
- aller cherche F
- stocker F dans registre 2
- additionner registre 1 et registre 2
- stocker le résultat dans le registre 5
À ce moment la, les registres 3,4 et 5 comprennent les résultat des calculs A+B, C+D ET E+F. Il ne lui reste plus qu'à effectuer le calcul final :
- soustraire le registre 3 avec le registre 4
- stocker le résultat dans le registre 1
- multiplier le registre 1 avec le registre 5
- stocker le résultat dans le registre 2
- envoyer le résultat à la RAM de la console
- effacer les registres
Et le processeur est à nouveau disponible pour un nouveau calcul !
Ce processus (ah ben tiens, voilà donc pourquoi il s'appel un processeur...) est ici très compressé pour les besoins de l'exemple qui se veut simple à comprendre. En réalité il prend beaucoup plus de coups d’horloge pour le réaliser car il faut donner l'adresse de la zone mémoire cible pour chacun des opérateurs (A, B, C, D, E et F) et spécifier si c'est une lecture ou une écriture. Mais si nous restons sur cette base théorique simpliste, il aura eu besoin de 24 coups d’horloge pour réaliser ce calcul. Sachant qu'il en exécute 7,6 millions en 1 seconde, je vous laisse calculer (vous m'avez pris pour un processeur ou quoi?) le temps qu'il lui aura été nécessaire pour y arriver... Bon allé, je suis sympa... 0,0000032 secondes (qui dit mieux?)
Mais ce qu'il faut bien comprendre dans ce principe de fonctionnement, c'est que le processeur à besoin d'un signal pour le cadencer et de mémoires de stockage pour aller chercher ses informations. Il récupère ce dont il à besoin, le stock, le traite, l'expédie puis se débarrasse de ses données pour recommencer son cycle. Il est bien loin le temps ou les processeurs de Skynet prendrons le contrôle des machines pour anéantir la race humaine ! Oui, je sais, avec mes réflexions, je fais chier Hollywood...
----------------------------------
4- Conclusion :
Voilà vous savez désormais à quoi sert le processeur centrale d'une console. Vous aurez donc compris que ce dernier ne sait rien faire d'autre que des opérations basiques composées de calculs simples (additions, soustractions, multiplications et division), d'instruction de "copier/coller" (lecture et écriture) et de comparaison d'état binaire (C'est à 0 ou c'est à 1? Ah c'est à 1? Ok alors je fait ca !) en cadence avec une horloge.
Sans un coup de starter, il ne sait strictement rien faire et il n'a aucune autonomie dans l’exécution d'un programme. Vulgairement, un processeur ne sait rien faire de plus qu'une calculette ! C'est un parfait petit esclave acharné de travail capable de réaliser plusieurs millions d'instructions par secondes.
Mais c'est un élément essentiel d'une architecture informatique. Sans lui, aucun calcul n'est possible (ou alors il faudrait une pièce remplie de composants pour y arriver). Il concrétise l’extrême complexité d'un programme informatique par des opérations simples mais très nombreuses... et juste une seule à la fois !
Mais que fait-il de ces calculs et autres comparaisons? Et bien ca, nous le verrons un peu plus tard dans les dossier après qu'on soit allé faire un tour dans le fonctionnement d'une mémoire pour le prochain volet.