Johnny
Johnny
Johnny
Description de Johnny
Johnny est un processeur virtuel dont l'exécution a lieu dans une fenêtre Windows. Par rapport à un
processeur moderne, son organisation interne est très simplifiée et son jeu d'instruction est très réduit,
mais c'est un processeur et il fonctionne comme un processeur.
Ses instructions utilisent uniquement un adressage absolu avec 1 adresse par instruction.
Pour en simplifier l'utilisation, Johnny utilise le système décimal pour ses adresses et ses données.
1. La mémoire RAM
Composée de 1000 positions mémoire numérotées sur 3 digits numériques (de 0 à 999)
Dans un processeur réel, les adresses mémoire seraient sous la forme de n digits binaires (n dépendant
de la taille de la mémoire et de la génération du processeur 4 bits,…32 bits, 64 bits …).
Mais pour notre utilisation simulée, une numérotation de 0 à 999 est plus pratique.
Chaque case mémoire est composée de 2 zones : hi de 2 digits numériques de 0 à 99 et lo de 3 digits
numériques de 0 à 999.
Dans cette mémoire
• Les data sont utilisent uniquement dans la partie basse (lo)
• Les instructions utilisent la partie haute (hi) pour le code opération et la partie basse (lo) pour
l'adresse concernée par cette opération.
Ainsi l'instruction ADD 42 (ajouter l'adresse 42 à l'accumulateur) sera écrite en mémoire : 02 042.
2. Le bus de données
Un réseau de fils chargé des échanges de données (le contenu des mémoires) entre la RAM, l'unité de
contrôle et l'ALU.
Il est dimensionné en relation avec la taille des data dans la RAM et relie RAM, unité de contrôle et
ALU.
3. Le bus d'adresse
Un réseau de fils chargé des échanges de d'adresses (le numéro des cases mémoires) entre la RAM et
l'unité de contrôle.
Il est dimensionné en relation avec la taille des adresses de la RAM et relie RAM et unité de contrôle.
4. L'unité de contrôle
Le rôle de UC est d'organiser les échanges entre la RAM, les bus, l'ALU et le fonctionnement de
compteurs et de registres internes.
Chaque instruction du set d'instruction du processeur nécessite un certain nombre de micro
instructions pour être exécutée.
Ainsi par exemple copier le contenu d'une mémoire dans l'ALU nécessite :
• de poser l'adresse de la mémoire choisie sur le bus d'adresse,
• de lire cette mémoire,
• de transférer son contenu sur le bus de données
• de transférer le contenu du bus de données dans l'ALU.
Le détail des micro-instructions liées à chaque instruction du set du processeur est défini à la
construction du processeur et est immuable. Le micro-code est donc associé de manière très intime à
l'ALU et à l'organisation interne du processeur.
Vous n'aurez donc pas à vous en préoccuper pour utiliser un processeur donné ; et ce, tant que vous
n'aurez pas envie de construire un nouveau processeur.
Johnny sait comment faire pour exécuter chacune des instructions de son set d'instruction.
Le microcode associé à chaque instruction s'exécute dans l'unité de contrôle que vous pouvez masquer
pour l'utilisation courante ou rendre visible pour satisfaire votre curiosité.
Remarque : Johnny est un processeur virtuel et peut donc fonctionner avec plusieurs sets d'instruction :
le standard mode ou le Bonsai mode (un jeu d'instruction réduit) ou avec tout autre jeu d'instruction
que vous pourriez avoir envie de tester (mais ce n'est pas l'objet de ce cours).
5. L'ALU
Design d'ALU le plus simple possible, composée d'un accumulateur unique.
L'accumulateur : un registre mémoire spécialisé très rapide (par rapport à la RAM) dans lequel
peuvent s'effectuer (de manière physique) certaines opérations au niveau des bits présents dans
l'accumulateur.
Par exemple et selon les versions d'ALU et de micro code associé une ALU peut savoir-faire (ou non)
les opérations suivantes (sans que cela soit exhaustif) :
• Incrémenter ou décrémenter de 1 la valeur de l'accumulateur
• Comparer la valeur de l'accumulateur à zéro
• Placer le contenu du bus de données dans l'accumulateur
• Placer le contenu de l'accumulateur sur le bus de données.
Un programme est une liste d'instructions utilisant les mnémoniques des instructions du processeur.
Les instructions s'exécuteront l'une après l'autre dans l'ordre séquentiel sauf instruction de rupture de
cette séquence.
On écrit ces mnémoniques dans un fichier texte. Ce fichier texte est traduit en code machine (des 0 et
des 1) à raison de 1code machine par mnémonique. Le fichier résultat peut alors être chargé dans la
mémoire à partir d'une adresse choisie.
Mais pour Johnny : pas d'assembleur donc écrit son programme à partir des mnémoniques, on le
traduit et on le charge instruction par instruction (en langage machine –des 0 et des 1-) dans la
mémoire de Johnny.
Les instructions s'exécuteront l'une après l'autre dans l'ordre séquentiel sauf instruction de rupture de
cette séquence. Le fait de passer d'une instruction à la suivante est géré par l'unité de contrôle dans
laquelle un compteur enregistre le numéro de la prochaine instruction à exécuter ; l'incrémentation de
ce compteur (le prg. Counter) est gérée par le micro code de l'unité de contrôle.
Rappel : Johnny est un processeur émulé ; il a la possibilité de fonctionner avec deux jeux
d'instructions (mnémoniques différents)
Vider la mémoire
Ecrire la valeur 3 dans la mémoire 006
Ecrire la valeur 2 dans la mémoire 0007
Saisir le programme suivant à partir de l'adresse 000 :
- TAKE 006
- ADD 007
- SAVE 008
- HLT 000
Remettre à zéro par la touche 'reset' et puis touche 'pas à pas' pour pouvoir et comprendre les
opérations successives (sans, puis avec affichage de l'unité de contrôle)