Le processeur est un dispositif capable d'exécuter une séquence d'instructions stockées en mémoire. Ces instructions peuvent nécessiter l'usage de registres (petit morceaux de mémoire interne). Elles peuvent aussi nécessiter la lecture et l'écriture en mémoire.
La périodicité de l'exécution des instruction est controllée par une horloge indiquant au processeur quand il doit effectuer un cycle. Un cycle est une partie d'instruction : décodage de l'instruction, récupération des données depuis la mémoire, écriture en mémoire, etc. Le nombre de cycles pour une instruction dépend de sa complexité.
Le processeur peut aussi réagir à certains signaux externes comme le signal de remise à zéro (reset) et les demandes d'interruption. Ces signaux sont habituellement émis par les périphériques.
Donc, un processeur a trois types d'interaction avec le monde extérieur :
Lecture et écriture en mémoire
Requête de cycle par l'horloge
Signaux
Dans Vinace, les processeur sont représentés par des classes héritant de
la classe CProcessor
.
Pour créer un nouveau processeur, une classe enfant doit être créée et les méthodes suivantes doivent être implémentées :
Constructeur: le constructeur de
CProcessor
prend deux paramètre : la mémoire qui
doit être liée au processeur et un nombre de signaux. Le constructeur de la classe
enfant doit appeler celui de CProcessor
avec un
nombre donnée de signaux. C'est le nombre de signaux possibles différents. Par
exemple, pour un processeur n'ayant que le signal de remise à zéro, ce nombre
est 1.
reset()
: cette méthode est censée
remettre l'état du processeur à zéro. Elle est appelée une fois lorsque le processeur
est instancié. C'est à la classe enfant de connecter le signal de remise à zéro à cette
méthode.
process_instruction()
: cette méthode
est censée traiter l'instruction suivante. Elle est appelée par
cycle()
une fois les cycles de l'instruction
précédente terminés. process_instruction()
doit augmenter le membre cycles
du bon nombre de
cycles correspondant à l'instruction.
process_signals()
: Cette méthode est
censée traiter les signaux. Elle est appelée par
cycle()
. Elle doit renvoyer faux si un signal
a été traité et vrai s'il n'y avait pas de signal à traiter. Dans ce cas,
cycle()
appelle alors
process_instruction
.
Précédent | Sommaire | Suivant |
Le modèle d'émulateur à trois couches | Niveau supérieur | Mémoire |