4
Lorsque l’on fait exécuter un programme, chacun des modules du simulateur entrent en
fonction. Au départ, on doit effectuer un reset général du système, qui permet
d’initialiser tous les signaux à zéro, et d’aller à la routine FETCHINSTR dans le
microprogramme.
C’est à chaque montée d’horloge, que le pipeline envoie de nouveaux signaux de contrôle
aux différents modules pour l’instruction suivante. Ces signaux se retrouvent à l’entrée
du pipeline, et sont remplacés par de nouvelles valeurs suite à la montée d’horloge. Ces
valeurs proviennent en réalité de la micromémoire, et représentent les différentes valeurs
de la série de bits qui forment une microinstruction. À chaque adresse de la
micromémoire, on retrouve une microinstruction. Les microinstructions non
programmées contiennent donc une série de bits qui ont tous la valeur zéro. Programmer
une microinstuction correspond donc à déterminer la valeur de ces différents bits.
Comme il l’a été mentionné précédemment, ce sont la valeur de ces différents bits qui
contrôlent les différents modules du simulateur. Chaque microinstruction contient donc
71 signaux de contrôles. Ces signaux de contrôles sont divisés en instructions,
dépendamment du module qu’ils contrôlent. Chaque instruction est divisée en champs,
dépendamment de quelle section du module elle contrôle. Cette division améliore la
programmation de ces signaux.
Le pipeline permet donc d’afficher les signaux de contrôle pendant un cycle d’horloge.
Cela assure donc la stabilité du système. C’est donc pendant ce cycle d’horloge que le
microséquenseur AM2910 détermine l’adresse de la prochaine microinstruction et que le
AM2901 (l’Alu), effectue les différentes opérations déterminées par les signaux de
contrôle sortant du pipeline. Toutes les opérations du microséquenseur AM2910, du
AM2901 et de la macromémoire doivent dont s’effectuer en un cycle d’horloge. Car à la
prochaine montée d’horloge, ce sont les signaux de la prochaine microinstruction qui
seront affichés à la sortie du pipeline. Normalement, l’accès à la macromémoire se fait
en plus d’un cycle d’horloge, mais pour faciliter la simulation, cet accès se fera en un
coup d’horloge. C’est pourquoi certains modules réagiront à la descente d’horloge.
Une instruction machine est composée de plusieurs microinstructions, et ces
instructions se retrouvent dans la macromémoire, avec les données nécessaires à
l’exécution du programme. Un programme contient plusieurs instructions machines.
Une table de correspondance permet de déterminer la première microinstruction d’une
instruction machine.
Dans ce qui suit on va expliquer le fonctionnement de chaque partie du système.
2-1- La macromémoire :
La macromemoire est la mémoire principale que le système utilise pour exécuter les
instructions en code machine, cette mémoire peut stocker jusqu'à 32 données de 8 bits
(32x8). La macromémoire est connectée au MAR, au MBR ainsi que le D-BUS. Les opérations
de lecture de la mémoire se fait sans aucun délai, mais l’écriture se fait à la descente de
l’horloge. Ceci est expliqué plus tard.
La lecture/écriture de mémoire est contrôlé par deux bits de contrôle RDWR (00 : aucune
opération, 01 : écrire la mémoire, 10 : lire la mémoire)