Quelques approfondissements sur le processeur 68000

BTS informatique industrielle
David Saint-Mellion
 

 

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 :

  1. Sauve dans un registre interne la valeur du SR.
  2. Supprime le mode trace (bit T du SR mis à "0") et passe en superviseur (bit S du SR mis à "1").
  3. Sauve le contexte dans la pile et demade le numéro de vecteur.
  4. 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
  5. Exécute le programme jusqu'à rencontrer l'instruction RTE.
  6. 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
  7. 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.

  1. 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

  1. A l'apparition de l'interruption, le processeur sauve le SR dans un registre interne et passe en superviseur donc A7=SSP=2008.

  1. 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.

  1. 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.

  1. 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)

  1. Le processeur est prêt à effectuer la reprise.

Conclusion et remarques

  1. Le traitement des interruptions est réalisé en mode Superviseur.
  2. Le mode Superviseur permet d'accéder à tous les registres du processeur et de disposer le tout le jeu d'instructions 68000.
  3. Les registres PC, SR et A7 du processeur 68000, sont associés au traitement des interruptions.
  4. Le contexte qui est sauvé dans la pile est constitué de 3 objets de16 bits le PC et le SR.
  5. Le pointeur de pile mis en oeuvre pour la sauvegarde et la restitution du contexte est SSP.
  6. 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.
  7. Le pointeur de pile SSP est mis à jour lors de l'initialisation du processeur. Il fait parti des constituants du vecteur de Reset.