Johnny

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 4

Manuel d’utilisation de 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.

Dans Johnny on retrouve les constituants suivants :


• Une mémoire ram
• Un bus de données
• Un bus d'adresse
• Une unité Arithmétique et logique (ALU) dans laquelle s'effectuent les calculs
• Une unité de contrôle micro-programmée qui gère le fonctionnement interne de Johnny

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.

A quoi ressemble un programme en code machine

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)

Les instructions du standard mode

01 : TAKE adddress : place la valeur de l'adresse dans l'accumulateur


02 : ADD address : la valeur de l'adresse est ajoutée à l'accumulateur
03 : SUB address : la valeur de l'adresse est soustraite à l'accumulateur
04 : SAVE adress : la valeur de l'accumulateur est placée à l'adresse indiquée
05 : JMP address : te programme continue à l'adresse indiquée
06 : TST address : si la valeur de l'adresse est 0, l'instruction suivante est sautée
07 : INC address : la valeur de l'adresse est incrémentée de 1
08 : DEC address : la valeur de l'adresse est décrémentée de 1
09 : NULL address : La valeur de l'adresse est fixée à 0
10 : HLT addreess : Le simulateur affiche un message annonçant que le programme est fini

Les instructions du Bonsai mode

01 : INC address : la valeur de l'adresse est incrémentée de 1


02 : DEC address : la valeur de l'adresse est décrémentée de 1
04 : TST address : si la valeur de l'adresse est 0, l'instruction suivante est sautée
03 : JMP address : te programme continue à l'adresse indiquée
05 : HLT address: Le simulateur affiche un message annonçant que le programme est fini

Comment utiliser Johnny:

1. pour visualiser ou masquer le fonctionnement de l'unité de contrôle


2. pour passer du standard mode au Bonsai mode et réciproquement
3. Pour lancer l'exécution de votre programme (toujours à partir de l'adresse 000)
4. Pour exécuter votre programme instruction par instruction
5. Pour insérer une donnée ou une instruction dans une case : cliquer sur une case mémoire pour la
sélectionner
1 3

Comment utiliser Johnny:


Cliquer sur une case mémoire pour la sélectionner :
Puis
• Pour une instruction
Cliquer sur 1 et taper le numéro de l'instruction sur le pavé
numérique
ou Cliquer sur 1 et sélectionner l'instruction avec 2 2
• Pour une donnée
Cliquer sur 3 et taper la valeur de la donnée sur le pavé
numérique
Pour valider la ligne : cliquer ici

Un exemple : en mode standard

En guise d'entrainement à la manipulation de Johnny

Effectuer les opérations suivantes :

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

Exécuter le programme : touche 'reset' puis 'exécution complète'

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)

Quand le programme fonctionne, le sauvegarder


(mais on ne peut pas sauvegarder, la fonction sauvegarder ne marche pas ….. désolé);

Vous aimerez peut-être aussi