Les états du processeur 68000
Le processeur dispose de deux états :
- l'un dit Superviseur. Il permet d'accés à toute la ressource
processeur : registres, jeu d'instructions.
- l'autre dit Utilisateur, donne un accès réduit à la ressource
processeur.
A chaque état correspond des domaines mémoires spécifiques et une pile
propre avec son pointeur de pile : utilisateur USP - superviseur et SSP.
Les registres mis en œuvres pour traiter les interruptions sont :
- le compteur programme, PC
- le registre d'état, SR
- registre d'adresse contenant le pointeur de pile de l'état courant , A7
- pointeur de pile superviseur USP
Les instructions, seulement exécutables dans l'état superviseur, sont dites
"privilégiées". Ces instructions sont :
- celles qui permettent d'accéder à la partie haut du registre d'état -SR-
- RTE, restitution du contexte
- STOP, RESET
- Accés à USP
L'état utilisateur peut être observé comme un mode dégradé de l'état superviseur,
du point de vue du jeu d'instructions.
A l'issue de l'initialisation (RESET), le processeur est dans l'état
"Superviseur".
Le processeur est placé dans l'état "Utilisateur" en mettant le bit S du
registre d'état à "0", grâce à une instruction privilégiée - (move from
SR).Le processeur traite les interruptions dans l'état Superviseur.
On peut retrouver un état "Utilisateur" par restitution du contexte après
traitement d'un programme d'interruption grâce à l'instruction - (RTE). |
|
Le registre A7
La pile est une zone mémoire accessible en lecture-écriture qui permet de sauvegarder
un contexte. Le processeur dispose d'un pointeur de pile utilisateur USP et d'un pointeur
de pile superviseur SSP.
Le registre A7 contient le pointeur de pile correspondant à l'état courant du
processeur. Il est impossible d'accéder à l'autre registre pointeur de pile par
A7. (En superviseur l'accès à USP est toutefois possible grâce à l'instruction
privilégiée move USP).
Le registre d'état SR
Le registre comprend 16 bits.
La partie basse, contient les drapeaux (Z, N, C, ...). Elle nommée "CCR" et
parfois improprement appelée "octet utilisateur". Elle est accessible dans les
deux états.
La partie haute (bits 15 à 8) du registre d'état, dite "octet superviseur",
est accessible ( modifiable) que dans l'état Superviseur. Les bits de cette partie
du SR sont liés aux interruptions.
- Le bit T, s'il est à un "1", à chaque instruction
exécutée par le processeur, une interruption est créée. Elle est utilisée par les
outils de mise au point des programmes.
- Le bit S renvoie l'état actuel du processeur : S="0" USER et
S="1" SUPER. Il permet aussi de basculer l'état du processeur en USER par une
opération d'écriture S <= "0". Cette opération est seulement
possible lorsque le processeur est en superviseur.
- Les bits I2 à I0 permettent de masquer les niveaux d'interruptions
matérielles.
Remarque : En superviseur, on accède à la totalité du
registre d'état (16 Bits). Par contre en utilisateur l'accès est limité à l'octet bas
(bits 7 à 0).
Intérêt des états du processeur, la gestion de la ressource mémoire en sécurité
Le processeur gère efficacement l'espace mémoire et permet une certaine sûreté au
niveau du fonctionnement de la machine informatique.
Le processeur gère deux espaces mémoire : l'un Superviseur, l'autre Utilisateur.
Les programmes liés au système d'exploitation sont placés dans le domaine
superviseur. Les programmes applicatifs sont placés dans le domaine utilisateur. Ainsi,
lorsqu'une défaillance apparaît dans le déroulement du programme afférent à
l'application, celle ci ne se reporte pas sur le fonctionnement de la machine
informatique, car la ressource logiciels - Système d'exploitation - est protégée.
Les informations code fonction "Fcx"
Le processeur 68000 met à disposition des informations électriques sur l'état du
processeur. C'est les informations appelées "code fonction" : "FC2, FC1
FC0"
Hormis l'état superviseur et utilisateur, qui est reflété par la borne FC2, le
processeur discrimine aussi les états :
- recherche d'une instruction "Etat Programme"
- transfert de Données "Etat Données"
- "Etat "Interruption" : Cet état se manifeste lorsque le
processeur récupère le numéro de vecteur dans le but d'associer un programme à une
interruption.
FC2 |
FC1 |
FC0 |
Etat |
Mémoire |
0 |
0 |
1 |
Utilisateur |
Données |
0 |
1 |
0 |
Utilisateur |
Programme |
1 |
0 |
1 |
Superviseur |
Données |
1 |
0 |
0 |
Superviseur |
Programme |
1 |
1 |
1 |
Interruption |
|
Les informations "Fcx" sont mises à contribution pour gérer l'espace
mémoire du processeur. Cette gestion des domaines permet de gérer 4 espaces mémoires de
16 Mo, soit 64 Mo avec une certaine sécurité. Le bus adresses permet de discriminer une
position mémoire dans l'un des espaces mémoires de 16 Mo offert par le processeur. La
figure ci-dessous présente un modèle de gestion des domaines.
Remarques
- A partir du processeur 68020, des états supplémentaires contribuent à une
gestion encore plus efficace de la ressource mémoire.
- Lors de l'installation d'un système, il faut configurer les cartes au niveau de
l'adresse de base mais aussi au niveau du domaine mémoire.
- La table des vecteurs est dans le domaine "Données Superviseur". A
l'initialisation, le processeur accède au domaine "Programme
Superviseur" pour prélever le vecteur de Reset et programme
d'initialisation.
- Dans les petites applications, sans système d'exploitation, la gestion des domaines
n'est pas, en général, assurée. On se limite à un espace de mémoire de 16Mo. Après
l'initialisation, le processeur se trouvant en Superviseur. Cet état est conservé par la
suite.
- Dans l'environnement VME les lignes AMI portent les informations relatives à l'état du
processeur.
Les interruptions
Quelques détails sur des interruptions.
- L'interruption initialisation, Vecteur 0 et 1. Elle se produit quand on active la
borne RESTE du processeur. Il se rend à la position mémoire 0h charger la valeur du
pointeur de pile superviseur puis à l'adresse 4h charger l'adresse de la première
instruction à exécuter. Il se trouve à l'issue de cette opération dans l'état
superviseur.
- L'interruption erreur de bus, Vecteur 2. Elle se produit quand on active la borne
BEER. Cette borne est liée au chien de garde qui surveille le bon fonctionnement du
protocole asynchrone à l'occasion d'un transfert de données.
- L'interruption erreur d'adresse, Vecteur 3. Elle est crée par le processeur
lorsqu'il rencontre une instruction qui présente un défaut d'alignement entre les
adresses et la taille des données. Ceci se produit, par exemple, qu'en on transfère un
objet de 16 bits à une adresse impaire.
- L'interruption TRAP #i, Vecteurs 32 à 47. C'est une interruption qui apparaît
quand le processeur exécute cette instruction. On dispose ainsi de 16 interruptions
logiciel TRAP #0 à TRAP #15. Ces interruptions sont utilisées par les commandes du
système d'exploitation.
- L'interruption violation de privilège, Vecteur 8. Elle se produit quand le
processeur exécute une instruction privilégiée alors qu'il est dans l'état
Utilisateur.
- Les interruptions demandées par les composants périphériques, Vecteurs 25 à
31 et 64 à 255. Les demandes sont réalisées sur les bornes IPL du processeur. Pour les
vecteurs 25 à 31, la valeur est calculée par le processeur à partir du niveau
d'interruption demandé sur les bornes IPL (Fonctionnement dit"
Autovectorisé"). Par contre pour les vecteurs supérieurs à 64, la valeur est
fournie au processeur sur le bus données bas (Fonctionnement dit" Vectorisé").
- Voir en annexe la table des vecteurs du
68000
Principe du traitement d'une interruption
Le processeur passe dans l'état superviseur pour traiter une interruption .
Le contexte est constitué par :
- l'adresse de l'instruction suivante à exécuter, contenue dans le compteur programme PC
(32 bits)
- le registre d'état SR (16 bits).
Il est donc constitué de 3 mots qui seront placés dans la pile à l'occasion de la
sauvegarde.
Procédure pour traiter une interruption
Le processeur :
- Sauve dans un registre interne la valeur du SR.
- Supprime le mode trace (bit T du SR mis à "0") et passe en superviseur (bit S
du SR mis à "1").
- Sauve le contexte dans la pile et demade le numéro de vecteur.
- Se procurer l'adresse de la première instruction à exécuter du programme associé à
l'interruption dans la table des vecteurs à l'adresse N° vecteur x 4
- Exécute le programme jusqu'à rencontrer l'instruction RTE.
- Restitue le contexte antérieur en prélevant dans la pile un objet de 16 bits qu'il
affecte au SR, puis en prélevant un objet de 32 bits qu'il affecte au PC
- Exécute l'instruction pointée par le compteur programme PC
La sauvegarde du contexte et restitution
Le sauvegarde du contexte est réalisé dans la pile Superviseur (pointeur SSP). Le
processeur manipule 3 objets de 16 bits. Lors de la restitution du contexte, le pointeur
de pile est incrémenté. |
Principe de la séquence restitution du contexte
SR <-- (A7)
A7 <-- A7 + 2
PC <-- (A7)
A7 <-- A7 + 4 |
- Lors de la sauvegarde du contexte le pointeur de pile est donc décrémenté.
Exemple de traitement
Soit un système processeur qui exécute une instruction. Le compteur programme PC
pointe sur l'instruction suivante qui se situe à l'adresse 31820h. Le registre d'état SR
a pour valeur 0000h. Le pointeur de pile utilisateur (USP) pointe sur l'adresse 1006h. Le
pointeur de pile superviseur (SSP) pointe l'adresse sur l'adresse 2008h. Le programme
associé à l'interruption " Trap #1 "se situe à l'adresse 240000h.
- Lorsque le processeur exécute l'instruction "TRAP #1 ", le compteur
programme pointe sur l'instruction suivante - PC = 31820h. Le processeur est dans l'état
Utilisateur, donc A7 = USP= 1006
- A l'apparition de l'interruption, le processeur sauve le SR dans un registre interne et
passe en superviseur donc A7=SSP=2008.
- Le processeur sauve le contexte dans la pile : la valeur du PC et du SR contenue
dans un registre interne du processeur. A la fin de cette opération, on constate que le
pointeur de pile superviseur est décrémenté de 6.
- Le N° de vecteur est 33. L' adresse du programme traitant l'interruption TRAP #1 se
trouve à l'adresse 84h. Le processeur prélève un objet 32 bits qu'il place dans le PC.
- Le processeur exécute le programme interruption à partir de l'adresse 240000h.
Lorsqu'il rencontre l'instruction RTE, il restitue le contexte (SR et PC)
- Le processeur est prêt à effectuer la reprise.
Conclusion et remarques
- Le traitement des interruptions est réalisé en mode Superviseur.
- Le mode Superviseur permet d'accéder à tous les registres du processeur et de disposer
le tout le jeu d'instructions 68000.
- Les registres PC, SR et A7 du processeur 68000, sont associés au traitement des
interruptions.
- Le contexte qui est sauvé dans la pile est constitué de 3 objets de16 bits le PC et le
SR.
- Le pointeur de pile mis en oeuvre pour la sauvegarde et la restitution du contexte est
SSP.
- Le pointeur SSP est décrémenté lorsqu'une interruption apparaît. Il faut donc
installer la pile dans la partie haute de la mémoire vive. De plus, les objets manipulés
sont des mots, donc il faut initialiser SSP avec une valeur d'adresse paire.
- Le pointeur de pile SSP est mis à jour lors de l'initialisation du processeur. Il fait
parti des constituants du vecteur de Reset.
|