Etape 7 : Architecture générale du processeur
Suite à la description du jeu d'instruction, il est maintenant possible de représenter l'architecture cible du SC91-A. Celle-ci peut être découpé en grand blocs fonctionnels tels que :
- Une unité de décodage des instructions
- Une unité de gestion des registres
- Une unité de traitement logique
- Des unité de gestion mémoire
Les principaux bus et les principaux aiguillages sont issus du jeux d'instruction et des différents modes d'adressage qui sont
utilisés.
L'unité de décodage des instructions
Le rôle de cet ensemble, est de traduire le code de l'instruction en un ensemble de signaux qui vont commander l'exécution de la dite instruction. Ainsi, de ce bloc entre, de la mémoire, une instruction dont l'adresse est issue du registre R00. Cette instruction est décodée et ce décodage vient donner des valeurs aux bus de controles : Rnn, Rmm, Rdd, Di et Ctrl. Rxx correspondent aux mêmes bits que dans les instructions et permettent donc d'identifier les deux sources et le registre de destination. Le signal Di correspond aux valeur directes qui peuvent être transmise au travers d'une instruction et qui sont alors passée en entrée de l'ALU comme première opérande. Enfin, les signaux de contrôle Ctrl viennent paramétrer l'ALU pour choisir l'opération logique à effectuer.
L'unité de gestion des registres
La gestion des 32 registres du CPU est confié à un bloc indépendant. Celui-ci contient les éléments de mémorisation formant les registres
mais aussi la logique de controle associée. Ce bloc devra être capable de calculer les flags à partir du résultat et des flag primaires
reçus de l'ALU et non représenté ici.
L'unité de gestion des registres à la particularité d'inclure le registre pointeur d'exécution, le module devra donc intégrer les fonctionnalités
nécessaire à son incrémentation. La gestion du pointeur de pile : incrémentation / décrémentation sera elle aussi prise en compte dans ce bloc.
L'unité de traitements logiques
Le bloc ALU est en quelque sorte le coeur du processeur, c'est cet élément qui réalise l'ensemble des opérations logiques et arithmétiques
qui seront demandées au processeur. Il reçoit deux opérandes de l'unité de gestion des registre ou de l'unité de décodage des instructions et
réalise le calcul associé aux signaux de contrôle qui lui sont appliqués. Le résultat de cette opération peut être une adresse qui est adressée,
dans ce cas, au gestionnaire de mémoire de données, ou une valeur qui est alors directement retournée au bloc de gestion des regsitres. Lors d'une
lecture en mémoire, celle-ci retourne une valeur qui est envoyée aux registres.
Il est à noter que toutes les opérations vers la mémoire de données passent par l'ALU, y compris s'il n'y a pas d'opération logique ou arithmétique,
dans ce cas, une opération "nulle" pourra être appliquer : l'opération qui n'a aucun effet sur la valeur reçue.
Les unités de gestion de la mémoire
SC91-A dispose de deux unités de gestion de l'interface mémoire, ce choix permet de dissocier l'accès à la mémoire de données de l'accès à la mémoire de programme. Cette séparation doit simplifier la rélalisation interne du processeur en supposant qu'il n'y a pas de conflit entre ces deux mémoire (bien que dans la réalité elle ne soient qu'une). Ce sont donc ces bloc de gestion qui devront gérer les conflits d'accès à la memoire unique. Cette gestion se fera par la mise en attente du processeur le temps que les lectures / ecritures soient effectives. Cette architecture permet aussi une séparation qui rendra transparent l'ajout de cache mémoire.