Professional Documents
Culture Documents
3.2) Essais / Mise au point ........................................................................................................ 11 3.2.1) Essais matriels : Solution mulateur....................................................................................11 3.2.2) Essais matriels : Autres solutions.............................................................................................12 3.3) Programmation .................................................................................................................. 12
7.3) Squenceur......................................................................................................................... 26 7.3.1) Horloge du squenceur..............................................................................................................27 7.3.2) dure dexcution dune instruction / Cycle machine ........................................................27 7.3.3) Exemple de dcomposition en cycle machine......................................................................27
1er cycle machine ................................................................................................................................................ 28 2me cycle machine............................................................................................................................................ 28
9.3.8) Les interruptions dans le programme source.........................................................................43 9.3.9 Acquittement dune interruption ...............................................................................................43 9.4) Lancement du programme et rinitialisation ................................................................... 44 Commande externe de la RZ..............................................................................................................44 Adresse de dpart du programme principal......................................................................................44 9.5) Surveillance du droulement du programme : le chien de garde................................... 45
Chien de garde externe ...................................................................................................................................... 45 Chien de garde interne ....................................................................................................................................... 45
Systme minimum ..................................................................................................................... 60 lments de la structure interne dun P ................................................................................. 60 Jeu dinstructions......................................................................................................................................61 Modes dadressage..................................................................................................................................61 Droulement dun programme................................................................................................ 62 La pile..........................................................................................................................................................62 Droulement normal...............................................................................................................................62 Interruption................................................................................................................................................63
P et C : une introduction
P. Morenton
25/11/06
Table des illustrations Fig. 1 : Systme microprocesseur............................................................................................................... 7 Fig. 2 : Exemple de systme avec ses E/S ..................................................................................................... 8 Fig. 3 : Rangement des instructions dans la mmoire programme......................................................... 9 Fig. 4 : Cycle de base dun microprocesseur ............................................................................................... 9 Fig. 5 : Conception dun programme...........................................................................................................10 Fig. 6 : Codes correspondant linstruction DEC $4000 du 68HC11.................................................11 Fig. 7 : Architecture Von Neuman................................................................................................................13 Fig. 8 : Architecture Harvard..........................................................................................................................13 Fig. 9 : Systme minimum P......................................................................................................................14 Fig. 10 : Premier exemple de programme ..................................................................................................15 Fig. 11 : ADDA, recherche du code opration..........................................................................................15 Fig. 12 : ADDA, recherche de loprande ..................................................................................................16 Fig. 13 : STAA, recherche du code opration............................................................................................17 Fig. 14 : STAA, recherche du poids fort de ladresse................................................................................17 Fig. 15 : STAA, recherche du poids faible de ladresse............................................................................18 Fig. 16 : STAA, excution de linstruction ...................................................................................................18 Fig. 17 Systme minimum Harvard...............................................................................................................19 Fig. 18 exemple de programme ....................................................................................................................20 Fig. 19 MOVLW, recherche du code instruction ......................................................................................21 Fig. 20 : ADDWF, recherche du code instruction / MOVLW, excution ...........................................21 Fig. 21 : MOWF, recherche du code instruction / ADDWF, excution ..............................................22 Fig. 22 : GOTO, recherche / MOVWF, excution ...................................................................................22 Fig. 23 : GOTO, excution .............................................................................................................................23 Fig. 24 : structure d'un P ...............................................................................................................................24 Fig. 25 : UAL et accumulateurs .....................................................................................................................25 Fig. 26 : Addition de laccumulateur et dune donne ............................................................................26 Fig. 27 : Dcalage gauche de laccumulateur.........................................................................................26 Fig. 28 : Recherche du code opration .......................................................................................................28 Fig. 29 : Recherche de loprande................................................................................................................28 Fig. 30 : Calcul puis stockage du rsultat....................................................................................................29 Fig. 31 : Codage dune instruction................................................................................................................31 Fig. 32 : Format des instructions dans les P 8 bits ..................................................................................32 Fig. 33 : exemple de pile.................................................................................................................................35 Fig. 34 : tat de la pile aprs empilement ...................................................................................................36 Fig. 35 : tat de la pile aprs rcupration automatique du PC ............................................................36 Fig. 36 : Exemple dinitialisation de la pile ..................................................................................................36 Fig. 37 : Principe dune interruption.............................................................................................................39 Fig. 38 : Sauvegarde puis restitution du contexte de A ...........................................................................40 Fig. 39 : liaisons de demandes dinterrupion dans C .............................................................................41 Fig. 40 : liaisons de demandes dinterruption dans un systme P ...................................................41 Fig. 41 : Structure interne simplifie du 80186 dIntel.............................................................................46 Fig. 42 : modle logiciel CPU 68HC11 .......................................................................................................47 Fig. 43 : Liaisons avec poigne de main entre interface et priphrique ............................................49 Fig. 44 : mission / rception de donnes srie........................................................................................50 Fig. 45 : Transmission avec horloge rception correcte et incorrecte .................................................51 Fig. 46 : liaison srie synchrone.....................................................................................................................51 Fig. 47 : 2 modes de fonctionnement tendu du 80C196 .....................................................................55 Fig. 48 : bus adresses/donnes et sigaux de contrle du 80C196 .......................................................55 Fig. 49 : 68HC11 en mode tendu avec mmoire externe....................................................................56
P et C : une introduction
P. Morenton
25/11/06
0) OBJET DE CE DOCUMENT
Ce document est un support de cours destination d'un public d'lectroniciens. Il permet dintroduire progressivement les diffrentes notions pour la comprhension du fonctionnement dun systme microprocesseur (ou microcontrleur) simple (8 bits ou 16 bits voir 5.1). Il ne sagit pas dun document synthtique. Ce document est orient pour permettre par la suite une mise en uvre dun systme P. Ce document a t initialement rdig pour servir dans 2 cas : introduction l'tude des Ps et Cs en classe de STS lectronique. Dans ce cas, certaines parties du document ne sont pas utilises. support de rvision pour formation post BTS. Certaines parties du document donnent quelques indications pour un approfondissement ultrieur. Des TPs et TDs complmentaires assurent une bonne assimilation. Seule la 1re partie de ce document ncessite une lecture linaire. Le reste est lire en partie en fonction des TPs envisags, avec retours en arrire pour approfondissement ultrieur.
P et C : une introduction
P. Morenton
25/11/06
grandeur physique, etc. Un systme P comprend le P proprement dit et des composants annexes.
Informations d'entre
Informations,actions de sortie
Un systme P procde priodiquement une acquisition dinformation, un traitement automatique de cette information puis sa restitution. Exemples Balance lectronique acquisition : prix au kg (Pkg) saisi partir dun clavier, masse de larticle (M) issue dun capteur et d'un conditionnement (amplification, ) traitement : calcul du prix payer (P) P = M Pkg restitution : affichage de la masse, du prix au kg et du prix payer, etc. Asservissement en vitesse dun moteur acquisition : vitesse souhaite (consigne C ) et vitesse relle du moteur ( ) traitement : calcul de la commande appliquer au moteur en fonction de la diffrence = C restitution : pilotage de linterface de puissance de commande du moteur. 1.1.3) MICROPROCESSEUR (P) / MICROCONTRLEUR (C) Au dbut de la commercialisation des Ps, un systme minimum tait obligatoirement constitu de plusieurs circuits intgrs. Les Cs sont apparus ensuite, lorsque lintgration des composants a fait des progrs. Actuellement, dans un circuit intgr, un C regroupe lquivalent dun systme P dans un mme botier. Un systme P peut tre constitu de nombreux composants (mmoires, etc.) ; il est facilement extensible. Les constituants d'un C sont figs1. Les Cs sont plutt ddis aux applications qui ne ncessitent pas une grande quantit de calculs complexes, mais qui demandent beaucoup de manipulations dentres / sorties. Cest le cas des contrles de processus, tel que par exemple le contrle des organes dune photocopieuse. Les systmes P sont plutt rservs pour les applications demandant beaucoup de traitement de linformation et assez peu de gestion dentres / sorties. Les ordinateurs sont raliss avec des systmes P.
Certains Cs actuels ont des modes de fonctionnement qui les rapprochent des Cs : on peut rajouter des composants externes comme avec un systme P. La distinction P / C n'est pas toujours trs marque.
P. Morenton 25/11/06
P et C : une introduction
Systme P
Entres logiques Unit de traitement Entre analogique C.A.N. C.N.A. Sortie analogique Sorties logiques
P et C : une introduction
P. Morenton
25/11/06
Le P est donc obligatoirement associ une mmoire (mmoire programme) qui contient les codes des instructions excuter rangs dans des mots mmoires des adresses successives (sauf en cas de rupture de squence).
Ad+5 Ad+4 Instruction sur 2 octets Ad+3 Ad+2 Ad+1 Ad Instruction 5 Instruction 4 Instruction 3 Instruction 3 Instruction 2 Instruction 1 Sens d'excution
Si le programme est fig , on emploie une mmoire de type ROM ; au contraire si ce dernier doit tre chang rgulirement comme cest le cas pour les logiciels dapplications des microordinateurs on utilise une RAM dans laquelle on charge au pralable ( partir dune disquette par exemple) les codes du programme. La mmoire programme dun C est souvent de petite taille (qqs kO ou qqs dizaines de kO), alors que celle associe un P peut tre trs importante (plusieurs MO ou beaucoup plus).
(cycle Fetch)
P et C : une introduction
P. Morenton
25/11/06
3) FLUX DE CONCEPTION
La conception dun ensemble comprenant un systme P ou un C peut se dcomposer en 3 parties : obtention du code placer en mmoire programme partir du cahier des charges essais / mise au point programmation industrielle de la mmoire associe au P ou interne au C Chacune de ces trois parties est brivement mentionne ici. Chacune fait lobjet de dveloppement dans un autre document.
La dmarche simplifie suivie pour concevoir un programme, donc pour obtenir la suite de codes correspondante est prsente ci-contre : Lcriture du programme et la traduction se font sur un micro-ordinateur. Le rsultat est un fichier qui contient le code excutable.
ANALYSE
Code excutable
Fig. 5 : Conception dun programme
Traducteur Terme gnral pour dsigner un logiciel capable de traduire le SOURCE (crit dans un langage facilement comprhensible par le programmeur) en un fichier EXECUTABLE comprhensible par le P. Assembleur (Assembler en anglais) Traducteur pour langage bas directement sur le jeu dinstruction du P. A chaque instruction du P correspond un mnmonique. Celui-ci est en gnral la contraction du ou des mots dsignant laction exerce par linstruction. Le mnmonique permet donc dvoquer facilement ce que
P et C : une introduction P. Morenton 25/11/06
10
ralise linstruction. Le langage de programmation utilis est le langage d'assemblage (Assembly language). Par exemple, en langage d'assemblage 68HC11 (microcontrleur 8 bits de MOTOROLA) la ligne suivante : DEC $4000 signifie : dcrmenter (do le mnmonique DEC) la donne enregistre ladresse 4000h. Aprs assemblage puis chargeMmoire ment en mmoire on obtienprogramme drait la suite de codes dcrite figure 6. Le programme source, crit en langage d'assemblage (assembly Instruction sur language), est constitu des 3 octets mnmoniques et d'autres informations prsentes plus loin.
Ad+2 Ad+1 Ad
00 40 7A
Remarque : On utilise frquemment le terme assembleur la place de langage d'assemblage . On dira alors un programme crit en assembleur. Chaque P ses instructions propres et donc des mnmoniques diffrents si bien quun programme crit en assembleur ne peut tre directement utilis avec un P autre que celui pour lequel il a t crit. Compilateur Traducteur pour langage indpendant du jeu dinstruction (C, Pascal, FORTRAN, etc.). Par exemple, en C lopration prcdente pourrait scrire : DATA = DATA - 1; avec DATA (nom donn la donne) enregistre ladresse 4000h. Cette criture est bien indpendante du P choisi et peu tre compile aussi bien pour un 68HC11 (elle produit alors les codes prcdents), que pour un 8031, quun pentium, etc.
11
une sonde qui remplace le P ou C sur le systme cible. La sonde senfiche sur le support de CI dans lequel vient normalement prendre place le P ou le C. un micro-ordinateur qui, avec le logiciel appropri, permet de contrler le fonctionnement de lmulateur. Plusieurs commandes permettent une excution contrle du programme, fonctionnement en pas pas, affichage de valeurs de registres internes du systme, 3.2.2) ESSAIS MATRIELS : AUTRES SOLUTIONS Il existe des solutions moins performantes pour les P 8/16 bits (carte dvaluation, kit pdagogique). Avec le dboguage in situ, le C dispose alors de connexions spciales pour une liaison srie avec un PC et des ressources ncessaires pour une excution par partie du programme (point darrt). Cette possibilit commence se dvelopper sur des Cs rcents. La mmoire programme est dabord programme par la liaison srie. Puis les commandes de dboguage sont envoyes par cette mme liaison. Le dboguage in situ nest possible quavec des C intgrant de la mmoire flash facile programmer et reprogrammer depuis lordinateur de dboguage.
3.3) PROGRAMMATION
Selon la quantit de production souhaite, on utilise un des types de mmoire suivants : ROM par masquage : programmation lors de la fabrication. Pour les trs grosses quantits. ROM OTP programmable par lutilisateur. EPROM programmable par lutilisateur. EEPROM programmable par lutilisateur. Pour les 3 derniers types, la programmation seffectue avec un programmateur de mmoire.
12
Les diffrentes units sont runies par des canaux dchanges : les bus. Les bus permettent de vhiculer : les adresses des instructions, des donnes et des registres des priphriques dE/S (unit dchange) les instructions du programme pour lunit centrale de traitement les constantes figes dans le programme les variables provenant de lunit dchange les variables, provenant de calculs intermdiaires, stockes dans une mmoire temporaire (RAM) Pour que toutes les informations puissent circuler correctement entre toutes les units, des signaux de contrles regroups sous le nom de bus de contrle sont utiliss.
Mmoire variables
Unit d'changes
Unit d'changes
Systme min P ou C
Milieu extrieur Milieu extrieur
Systme min P ou C
P et C : une introduction
P. Morenton
25/11/06
13
5) SYSTME MINIMUM ARCHITECTURE VON NEUMAN 5.1) STRUCTURE DUN SYSTME MINIMUM
Seule la structure des systmes les plus simples est prsente ici.
Bus de contrle Dcodeur d'adresse
Interface parallle
OE
RD/WR
RD/WR
Bus de donne
Le P utilise le mme canal dchange pour lire les instructions et acqurir (lire) et restituer (crire) des donnes : le bus de donnes. La taille de ce bus est une des caractristiques principales des P et C. Les tailles les plus courantes des bus de donnes sont : 8 bits pour les petites applications embarques (ex 68HC11, 8051, ) 16 bits pour les applications embarques de moyenne complexit (ex 68HC16, 80196, ) 32 bits, 64 bits pour les gros calculateurs, les ordinateurs (et mme certaines consoles de jeux grand public) Les adresses dlivres par le P sont vhicules par le bus dadresses (16 bits pour le 68HC11 ce qui correspond 216 = 65536 adresses). La taille de bus dadresse est en gnral en relation avec celle du bus de donnes. Remarque : Certains Ps utilisent, pour rduire le nombre de broches utilises pour le bus dadresses et le bus de donnes, une technique qui sera prsente plus loin.
P et C : une introduction
P. Morenton
25/11/06
14
00 90 7E 00 40 B7 10 8B
JMP $A000
STAA $4000
ADDA #$10
5.2.1) ADDITION Le C commence par excuter linstruction ADDA #$10 pour laquelle le contenu dun registre A (interne au C) est additionn au nombre 10h et le rsultat rang dans A. On suppose que le code de linstruction excuter est rang ladresse 9000h et que le nombre 10h est rang en 9001h. Recherche de linstruction
Bus de contrle Dcodeur d'adresse
9000h
P ou CPU d'un C
10 8B EPROM
OE RD/WR
Interface parallle
RD/WR
Bus de donne
P et C : une introduction
P. Morenton
25/11/06
15
Le C va chercher linstruction en plaant son adresse, ici 9000h, sur le bus dadresse. Le dcodeur active CS1, seule lEPROM est slectionne; les autres circuits ont leurs sorties en tat haute impdance. Le contenu de la position mmoire adresse (8Bh qui est le code de linstruction ADDA) est plac sur le bus de donnes et lu par le C. Excution de linstruction
Bus de contrle Dcodeur d'adresse
9001h
P ou CPU d'un C
10 8B EPROM
OE RD/WR
Interface parallle
RD/WR
Bus de donne
Le C reconnat le code de linstruction ADDA (dcodage) et sait alors quil doit additionner A avec le contenu de ladresse suivante. Le C va alors chercher le nombre additionner en dlivrant ladresse mmoire qui suit immdiatement celle o tait rang le code opration. Tout se passe comme prcdemment et la donne 10h est transfre dans le microcontrleur via le bus de donnes. Enfin, le C additionne A et 10h en interne puis stocke le rsultat dans A. Calcul de ladresse de linstruction suivante Ici 9002h. 5.2.2) TRANSFERT DUNE DONNE DU P VERS LEXTRIEUR Le C excute linstruction suivante STAA $4000
pour laquelle le contenu du registre A est transfr vers lextrieur via un registre de linterface parallle (localis ladresse 4000h).
P et C : une introduction
P. Morenton
25/11/06
16
Recherche de linstruction
Bus de contrle Dcodeur d'adresse
9002h
P ou CPU d'un C
00 40 B7 EPROM
OE RD/WR
Interface parallle
RD/WR
Bus de donne
Tout se passe comme pour lexemple prcdent. Le C place ladresse denregistrement de linstruction, ici 9002h, sur le bus dadresses; le dcodeur active CS1 et le code opration est transmis au C. Excution de linstruction Le C reconnat linstruction, il sait dsormais quil doit successivement aller chercher le poids fort de ladresse de stockage de A (40h) puis le poids faible de cette adresse (00h).
Bus de contrle Dcodeur d'adresse
9003h
P ou CPU d'un C
00 40 B7 EPROM
OE RD/WR
Interface parallle
RD/WR
Bus de donne
P et C : une introduction
P. Morenton
25/11/06
17
Bus de contrle
Dcodeur d'adresse
9004h
P ou CPU d'un C
00 40 B7 EPROM
OE RD/WR
Interface parallle
RD/WR
Bus de donne
Le C a maintenant en sa possession toutes les informations ncessaires lexcution de linstruction proprement parler : il connat laction raliser, ici transfrer A vers lextrieur, et il connat ladresse de la destination, 4000h.
Bus de contrle
Dcodeur d'adresse
4000h
P ou CPU d'un C
00 40 B7 EPROM
OE RD/WR
Bus de donne
Le C place alors 4000h sur le bus dadresses, place A sur le bus de donnes et fait une demande dcriture de donne (activation dune ligne WR en gnral). Ceci a pour effet denregistrer A dans un registre de linterface parallle et de permettre sa sortie vers lextrieur (pour commander un afficheur 7 segments par exemple). Calcul de ladresse de linstruction suivante Ici 9005h.
P et C : une introduction
P. Morenton
25/11/06
18
5.2.3) SAUT UNE ADRESSE Le C excute alors linstruction JMP $A000 qui permet de sauter directement linstruction enregistre ladresse A000h Recherche de linstruction Comme prcdemment, le C acquiert le code de linstruction (7Eh pour JMP). Excution de linstruction et calcul de ladresse de linstruction suivante Le C va chercher ladresse du saut, ici A000h. Ladresse de la prochaine instruction est force A000h (au lieu de 9008h comme on pourrait le supposer). Lors du cycle suivant, lexcution du programme reprendra donc linstruction range cette adresse.
CPU
Interface parallle
RD WR
RD WR
Bus d'instruction
La CPU utilise 2 canaux d'change pour lire les instructions et acqurir (lire) et restituer (crire) les donnes : le bus instruction ou bus programme et le bus de donne. Les tailles de ces bus sont en gnral diffrentes. La taille la plus courante du bus de donnes pour un C est de 8 bits.
P et C : une introduction
P. Morenton
25/11/06
19
Les deux bus distincts programme et donne permettent de raliser simultanment une recherche d'une instruction et l'excution de l'instruction prcdente.
GOTO 0x80 MOVWF 0x06 ADDWF 0x15,W MOVLW 0x10 (C: code instruction, 10: oprande)
Ce programme permet d'effectuer une addition d'une variable contenue dans un registre d'adresse 15h avec la constante 10h, de ranger le rsultat sur la sortie d'un port d'adresse 06h puis de sauter l'adresse programme 80h. Une addition doit ncessairement se faire avec un oprande dans un registre W (quivalent de l'accumulateur dans d'autres P/C) et l'autre dans un registre quelconque. On a choisi ici le registre d'adresse 15h. Il faut donc avec de raliser l'addition ranger la constante 10h dans le registre W. 6.2.1) TRANSFERT DE LA CONSTANTE DANS LE REGISTRE W On utilise l'instruction MOVLW 10h (MOVe Litteral [ici 10] to W). Le code en mmoire programme est C10 soit 1100 0001 0000. Les 4 MSB correspond au code de l'instruction, les 8 LSB correspondent la constante. En une seule le lecture de la mmoire programme, le C a le code de l'instruction et la constante ncessaire pour excuter l'instruction.
P et C : une introduction
P. Morenton
25/11/06
20
Dcodeur d'adresse Bus d'adresse instructions 40h CS1 Bus d'adresse donnes CS2
10F C10
CPU
Interface parallle
RD WR
RD WR
Pendant qu'il effectue la lecture de l'instruction, le C excute l'instruction qu'il a prcdemment lue (non reprsent ci-dessus). 6.2.2) TRANSFERT CONSTANTE / EXCUTION -- ADDITION / RECHERCHE DU CODE Pendant qu'elle crit la valeur de la constante prcdemment lue dans W, la CPU recherche le code de l'instruction suivante. ADDWF 15h,W permet d'additionner la valeur contenue dans W (10h) la valeur contenue dans le registre d'adresse 15h.
Dcodeur d'adresse Bus d'adresse instructions 41h CS1
Ecriture dans W
10Fh C10
CPU
Interface parallle
RD WR
RD WR
Les informations sur le bus d'instruction correspondent au code de l'instruction et l'adresse de l'oprande utiliser pour l'excution.
P et C : une introduction
P. Morenton
25/11/06
21
6.2.3) ADDITION / EXCUTION -- TRANSFERT / RECHERCHE DU CODE Le C utilise les 2 bus d'adresse simultanment. D'un ct, il recherche le code de l'instruction suivante l'adresse 42h, d'un autre ct il recherche l'oprande l'adresse 15h. Cette dernire adresse tait place avec le code de l'instruction prcdente.
Dcodeur d'adresse Bus d'adresse instructions 42h
addition entre W et le bus de donne rsultat dans W
15h CS1
xx
Interface parallle
CPU
RD WR RD WR
MVWF 06h permet de transfrer le contenu de W dans un registre d'adresse 6 qui correspond un port de sortie. 6.2.4) TRANSFERT / EXCUTION SAUT / RECHERCHE DU CODE Le C utilise les 2 bus d'adresse simultanment. D'un ct, il recherche le code de l'instruction suivante l'adresse 43h, d'un autre ct il transfre le contenu de W l'adresse 06h. Cette dernire adresse tait place avec le code de l'instruction prcdente.
Dcodeur d'adresse Bus d'adresse instructions 43h CS1 Bus d'adresse donnes 06h CS2 Registre d'adresse 06h
A80 026
CPU
yy
RD WR
RD WR
P et C : une introduction
P. Morenton
25/11/06
22
GOTO 80h permet de continuer le programme partir de l'adresse indique. 6.2.5) SAUT / EXCUTION L'excution de l'instruction revient rechercher la nouvelle instruction l'adresse contenue avec le code du saut (prcdente instruction).
Dcodeur d'adresse Bus d'adresse instructions 80h CS1 Bus d'adresse donnes CS2
CPU
zzz
Interface parallle
RD WR
RD WR
7) LMENTS DE LA STRUCTURE INTERNE DUN MICROPROCESSEUR 7.1) ORGANISATION INTERNE SIMPLIFIE DUN P
Le microprocesseur renferme tous les circuits logiques qui permettent de rechercher, dcoder et excuter automatiquement les instructions loges en mmoire. Le P peut tre considr comme un automate compos de deux ensembles : la partie oprative. Elle permet deffectuer les oprations arithmtiques et logiques sur les donnes ainsi que de calculer ladresse mmoire des instructions ou des donnes la partie commande. Elle est notamment compose dun registre instruction o est stock le code de linstruction excuter. Ce registre est associ un squenceur charg de dlivrer lensemble des signaux internes ncessaires au fonctionnement de la partie oprative du P La figure ci-dessous donne une reprsentation d'un P (ou de l'unit centrale de traitement d'un C) architecture Von Neuman.
P et C : une introduction
P. Morenton
25/11/06
23
Partie Commande
Squenceur
Registre Instruction
Busde Contrle Partie Oprative Unit de Traitement Unit de Getion Mmoire Bus d'adresse Busde Donne
La partie oprative est ralise avec une Unit Arithmtique et Logique (UAL ou ULA ou en anglais ALU pour Arithmetic Logic Unit) et des registres dont certains sont associs des compteurs, Le rle du squenceur est dcrit plus loin, aprs une premire approche lors du fonctionnement de lUAL. Les informations entre les registres, lUAL, sont changes par lintermdiaire de bus internes quon nomme aussi chemins de donnes internes. Les informations sont achemines dun endroit un autre et mmorises grce aux signaux de contrle dlivrs par le squenceur pilot par un signal dhorloge.
P et C : une introduction
P. Morenton
25/11/06
24
7.2.2) RSULTAT DE LA DERNIRE OPRATION / BITS DTAT A lUAL est associ un registre qui contient des bits donnant des informations sur le rsultat de la dernire opration. Ces bits sont appels bits dtat (status bits) ou drapeaux (flags). La grande majorit des P disposent des informations suivantes : rsultat gal 0 rsultat ngatif (MSB 1) retenue dpassement de capacit Le registre contenant les bits dtat peut aussi contenir des bits rservs dautres usages. Le nom de ce registre dpend des constructeurs. Quelques exemples de noms : registre dtat (status register). Nom utilis si le registre na que cette seule utilit registre code condition (Code Condition Register). Chez Motorola ; ce registre contient des bits rservs dautres usages mot dtat du programme (Program Status Word). Chez Intel ; ce registre contient des bits rservs dautres usages 7.2.3) OPRANDE(S) ET RSULTAT DE LOPRATION / REGISTRES ASSOCIS Le ou les oprandes sont rangs dans un (ou plusieurs) registre(s) interne(s) du P ou de lunit centrale du C ou en mmoire externe. Pour les oprations un oprande (complmentation, dcrmentation, mise 0, ), loprande peut tre : dans un registre interne. Loprande a t auparavant charg dans ce registre depuis la mmoire ou lunit dchange. ou en mmoire externe. Dans les oprations 2 oprandes (addition, et logique, ) : un des oprandes est dans un registre interne et lautre oprande est en mmoire externe ou les 2 oprandes sont dans des registres internes. Selon les P ou C, le rsultat de lopration est rang : ncessairement dans le registre interne qui contenait un des oprandes (qui est cras ). Dans ce cas le P dispose dun (ou deux) registre(s) spcialis(s) pour contenir le (ou les) oprande(s) et le rsultat de lopration. Ce(s) registre(s) se nomme(nt) : accumulateur (P Motorola, ), registre de travail W (PIC de MicroChip) ou dans un des registres internes gnraux, si le P ne dispose pas de registre spcialis 7.2.4) EXEMPLES DE FONCTIONNEMENT DUAL DUN P MOTOROLA La figure suivante reprsente un ALU et 2 registres spcialiss, les accumulateurs A et B, dun P Motorola. Ce qui suit est facilement transposable un autre P ou C. Chaque entre de lUAL peut tre connecte : un accumulateur au bus de donnes externe
P et C : une introduction P. Morenton 25/11/06
U.A.L.
Fig. 25 : UAL et accumulateurs
25
La sortie de lUAL est connecte un des 2 accumulateurs. Ces connexions se font laide de bus internes (non reprsents) que lon peut aiguiller. Un des rles du squenceur mentionn plus haut est de commander tous les aiguillages ncessaires, durant lexcution dune instruction. Addition On dsire raliser une addition entre le contenu de laccumulateur A et une constante range en mmoire programme. La ligne de programme en assembleur est : ADDA #$10 le contenu de A, par exemple 22h, est additionn la donne 10h qui provient du bus de donnes. Lorsque lopration est termine, lancien contenu de A est remplac par le rsultat, ici 32h.
10 A 22 B
A 32 B
32
Dcalage sur un mot binaire On peut galement oprer un dcalage gauche de A avec linstruction ASLA (qui signifie Arithmetic Shift Left A) Si on suppose que A contient initialement 94h soit 10010100b alors le rsultat du dcalage est 00101000b soit 28h.
A B 1001 0100 A B 1001 0100
A B 0010 1000
1001 0100
1001 0100 0
01010 1000
b) dcalage
c) stockage du rsultat
7.3) SQUENCEUR
Nous avons vu que le microprocesseur recherche puis excute automatiquement les instructions stockes en mmoire. Lenchanement de ces oprations est command par un circuit squentiel. Le squenceur a dj t introduit dans les exemples sur lULA. Le squenceur gnre : les signaux du bus de commande ( RD,WR , etc.),
P et C : une introduction
P. Morenton
25/11/06
26
les signaux internes aux P (gestion des registres, de lA.L.U., aiguillages des bus internes, etc.). Le squenceur est ralis avec une structure qui comprend une mmoire ROM intgre. Celle-ci contient des micro-instructions ( ne pas confondre avec les instructions contenues dans la mmoire programme). La mmoire des micro-instructions nest pas accessible lutilisateur. Chacune des phases dcrites en 5.2) ncessite plusieurs micro-instructions et donc plusieurs cycles dhorloge. 7.3.1) HORLOGE DU SQUENCEUR Les signaux (externes et internes) produits par le squenceur sont synchrones dun signal dhorloge produit par un oscillateur. Loscillateur peut tre : quartz. Cest le cas le plus frquent. Il peut tre constitu de : une circuiterie interne au P et un quartz externe. un oscillateur externe comprenant son quartz et son lectronique rseau RC. On rencontre ce cas avec des C bon march o la dure prcise dexcution dune instruction na pas beaucoup dimportance. 7.3.2) DURE DEXCUTION DUNE INSTRUCTION / CYCLE MACHINE Le temps dexcution dune instruction sexprime en cycles machine ; un cycle machine correspondant un nombre entier de priodes de lhorloge. Selon les constructeurs de P, on utilise les termes cycles machine (CPU cycle) ou dure dtat (state time). A chacune des phases dcrites en 5.2) correspond en gnral un cycle machine. Pour la dure de chaque phase, on rencontre 2 cas : la dure de chaque phase est fixe. Cest le cas le plus frquent avec des P et C relativement lent (cycle machine > qqs centaines de ns) la dure dune phase comportant un accs une mmoire ou une unit dchange externe est variable, pour permettre des accs des organes rapides ou lents. En gnral cest ltat dune broche externe du P/C qui dtermine sil faut ou non rajouter des cycles dhorloge. Par exemple avec un 80C196 avec un quartz de 20 MHz, lors dun accs une mmoire EPROM de temps daccs lev, il faut gnrer une impulsion sur lentre READY du C pour augmenter la dure de la phase de lecture en insrant des tats dattente (wait state) dans le cycle machine. Lorsque la dure de chaque phase est fixe, le constructeur donne pour chaque instruction, sa dure dexcution exprime en cycles machine. Exemple de dure dexcution dune instruction Pour un 68HC11, la dure de chaque phase (recherche instruction en mmoire, excution) est fixe. Un cycle machine correspond 4 priodes dhorloge. Les instructions durent de 2 6 cycles machines. Avec un quartz 8MHz, un cycle machine dure 500ns ; une instruction est excute en 1 3s.
7.3.3) EXEMPLE DE DCOMPOSITION EN CYCLE MACHINE Dans lexemple suivant, la dcomposition en cycles correspond aux cycles de recherche et dexcution. Il nen est pas toujours ainsi.
P et C : une introduction P. Morenton 25/11/06
27
On utilise un P type 6809. Le microprocesseur va excuter linstruction EOR #$5A pour laquelle un OU EXCLUSIF est ralis entre le contenu de laccumulateur A (E7h par exemple) et la donne 5Ah ; le rsultat stock dans A. On suppose que le code opration est rang ladresse AFFFh. On note (R) le contenu dun registre. 1er cycle machine
Bus de contrle Dcodeur d'adresse
AFFFh
68HC11
Squenceur PC AFFF A B E7
5A 3D EPROM
OE RD/WR
Interface parallle
IR 3D
RD/WR
Bus de donne
- (PC) est plac sur le bus dadresses, - Le registre instruction est charg avec le code de linstruction EOR, (IR) = 3Dh, - (IR) est dcod et le P sait quil doit aller chercher loprande ladresse suivante, - PC (PC)+1. 2me cycle machine
Bus de contrle Dcodeur d'adresse
B000h
68HC11
Squenceur PC B000 A B E7
5A 3D EPROM
OE RD/WR
Interface parallle
IR 3D
RD/WR
Bus de donne
- (PC) est plac sur le bus, - La donne 5Ah est transfre vers lU.A.L.,
P et C : une introduction
P. Morenton
25/11/06
28
Bus de contrle
Dcodeur d'adresse
Bus d'adresse
68HC11
Squenceur PC B001 A B BD
CS1 CS2
CS3
5A 3D EPROM
OE RD/WR
Interface parallle
IR 3D
BD
RD/WR
Bus de donne
- le C excute lopration est stocke le rsultat dans laccumulateur, - puis le PC est prpar pour linstruction suivante PC (PC)+1. Durant ce 2me cycle, il y a eu plusieurs phases gres par le squenceur. Lexcution complte de linstruction dure 2 cycles machine.
P et C : une introduction
P. Morenton
25/11/06
29
Registre Instruction (RI) Il contient le code de linstruction excuter. Ce code est celui qui vient dtre lu en mmoire programme. La logique de dcodage dinstruction du P analyse le contenu de RI pour dterminer la tche effectuer. Le squenceur est command partir de RI. Remarque : On a vu comment, sur un P de type 6809 ou 68HC11, certaines instructions permettent daccder aux registres. Par exemple linstruction ADDA permet dadditionner une valeur A, JMP permet de forcer le contenu de CO donc de sauter une instruction donne, etc. En revanche, RI nest pas accessible au programmeur.
30
COP
Le COP indique le type dopration effectuer (par exemple une addition, un transfert, etc.) tandis que le nombre Qn permet daccder aux oprandes (sil y en a !) de linstruction Dans les microprocesseurs 8 bits, le COP est cod sur un octet tandis que le nombre doctets rservs Qn est variable. Dans les Cs darchitecture Harvard de type PIC (Microchip), le COP et Qn tiennent sur un mot de 12 14 bits selon les Cs
P et C : une introduction
P. Morenton
25/11/06
31
Exemples de codages dinstructions pour un P 6809 de Motorola a) instruction 1 octet (ex. CLRA), Qn nexiste pas
Octet 1 4 COP F
Octet 1 8 COP A
Octet 2 2 Qn 0
Octet 1 B COP 0
Octet 2 C 5 Qn
Octet 3 7 0
Mise 0 de A
OU logique entre A et loprande 20h. COP=8Ah reprsente lopration ORA, Qn reprsente directement loprande, soit 20h.
soustrait la donne (loprande) stocke ladresse C570h de laccumulateur. COP=B0h, Qn, sur 2 octets, reprsente ladresse de loprande.
Exemple de codage d'instruction pour un C PIC 16C5x de MicroChip Le nombre de bits rservs pour le code opratoire dpend du type d'instruction. Instructions sur des constantes
11 10 9 8 7 6 5 4 3 2 1 0
COP
constante
P et C : une introduction
P. Morenton
25/11/06
32
8.5.1) CRITURE DES INSTRUCTIONS ET DES MODES DADRESSAGE LANGAGE D'ASSEMBLAGE En gnral une instruction complte scrit avec son mnmonique qui ne dpend pas du mode dadressage suivi de la ou des rfrences (emplacement du rsultat, oprande(s) ou emplacement(s) du ou des oprandes) ex : en langage d'assemblage 68HC11, ANDA #%0110 1111 signifie effectuer un ET logique entre contenu de A et 0110 1111. Le rsultat est rang dans A (2 rfrences et 2 oprandes : A, 0110 1111) ANDA $4000 signifie effectuer un ET logique entre contenu de A et le contenu de ladresse 4000h. Le rsultat est rang dans A. ex : en langage d'assemblage 80C196, ANDB 20h, 30h,#0110 1111b signifie effectuer un ET logique portant sur des mots de 8 bits (B : Byte) entre le contenu du registre dadresse 30h et 0110 1111. Le rsultat est rang dans le registre dadresse 20h (3 rfrences et 2 oprandes) Pour les C darchitecture Harvard de type PIC (Microchip), chacun des mnmoniques (peu nombreux) correspond un mode dadressage. ex : en langage d'assemblage PIC, ANDLW 0110 1111b signifie effectuer un ET logique entre le contenu du registre W et 0111 1111 ( litteral ) AND Litteral and W ANDWF 0011b,0 signifie effectuer un ET logique entre le contenu du registre W et le contenu du registre f dadresse 0011, le rsultat est rang dans le registre f de dpart (dernier 0) Les diffrents modes dadressage sont mentionns par les rgles dcritures propres chaque assembleur spcifique un P ou C.
8.5.2) QUELQUES EXEMPLES DE MODES DADRESSAGE Les modes dadressages possibles dpendent des Ps et Cs. Pour connatre les modes dadressage de chaque P ou C, il faut se rfrer sa documentation technique dtaille. Les 3 premiers modes dadressage de la liste ci-dessous se retrouvent dans tous les Ps. Les modes dadressage suivant sont quelques exemples parmi ceux disponibles sur les Ps/Cs des familles Intel ou Motorola. Certains constructeurs utilisent le terme adresse effective (EA Effective Address) pour dsigner ladresse vhicule sur le bus dadresse qui correspond lemplacement mmoire ou au registre qui contient loprande. Adressage inhrent ou implicite Le mnmonique et le code opratoire qui le traduit contient toute linformation pour linstruction excuter Exemples (68HC11) : CLRA, NOP, etc.
P et C : une introduction
P. Morenton
25/11/06
33
Adressage immdiat Loprande est une constante qui est donne sur la ligne de linstruction (aprs le mnmonique et la ou les autres rfrences ventuelles). En mmoire, on trouve donc le code opratoire suivi loprande (aprs le codage des ventuelles autres rfrences). Lorsquil y a plusieurs oprandes, le mode dadressage immdiat ne concerne quun oprande. La constante est dans Qn. Exemples (68HC11) : LDAA #$B0 Qn = B0h et le caractre # indique quil sagit du mode dadressage immdiat. Adressage relatif Ce mode dadressage est utilis pour les sauts et les branchements. Il nest parfois pas mentionn dans la documentation des Ps qui en disposent, car son emploi est transparent lutilisateur en langage d'assemblage. En effet il est employ avec des instructions du type SAUT etiquette , avec etiquette place en dbut de ligne de programme atteindre. Aprs assemblage, etiquette sera remplace par le dplacement ajouter ladresse de linstruction de saut pour atteindre ladresse de linstruction dsire. Le dplacement peut tre positif ou ngatif. Adressage index et utilisation de tableau Ce mode dadressage a de nombreuses variantes. Il permet, entre autres, daccder aux lments dun tableau. Un tableau est constitu de plusieurs lments avec un seul nom. Ce nom correspond ladresse de dbut du tableau. Ladresse effective de loprande est gale une base + un dplacement. Le registre dindex peut contenir le dplacement par rapport au dbut du tableau ncessaire pour atteindre un lment de ce tableau. La base est alors ladresse de dbut du tableau. Le registre dindex est un registre interne au P ou la CPU du C qui peut tre spcifique ou au contraire un registre gnral utilis pour cet emploi. Exemples : Intel 80C196 : LD AX, Table[BX] ; charger (LoaD) le registre AX avec loprande dont ladresse effective est gale ladresse de dbut du tableau Table + le contenu du registre BX (registre gnral qui contient le dplacement). Pour savoir comment est dfini le nom Table, voir le 13 et plus particulirement le 13.2. Motorola 68HC11 : ADDA Table,X ; ajouter au contenu de A loprande dadresse effective gale ladresse de dbut du tableau Table + le contenu du registre X (registre dindex spcifique) Pour savoir comment est dfini le nom Table, voir le 13 et plus particulirement le 13.2. Adressage tendu (Motorola) Ladresse effective de loprande suit le mnmonique. Si ladresse effective est sur 16 bits, dans la mmoire, ladresse effective est range dans les 2 octets qui suivent le code opratoire. Qn correspond donc ladresse effective. Exemple : LDAA $C000 Qn = C000h.
P et C : une introduction
P. Morenton
25/11/06
34
Adressage registre (Intel) Les oprandes sont dans des registres internes du P/C, le rsultat de lopration est lui aussi dans un registre. Exemple : ADD AX, BX, CX signifie additionner les contenus des registres BX et CX et placer le rsultat dans AX
Bas de la pile
RAM
Fig. 33 : exemple de pile
La sauvegarde dune donne sur la pile peut seffectuer automatiquement (voir 9.2 et suivants) ou laide dune instruction crite par le programmeur. La sauvegarde dune donne seffectue comme suit : le P place sur le bus dadresse le contenu de SP et la donne sauvegarder sur le bus de donnes. La donne est stocke (empile) sur le sommet de la pile par une criture, SP est automatiquement dcrment pour pointer le prochain emplacement libre.
P et C : une introduction
P. Morenton
25/11/06
35
Ad-5 Ad-4
Haut de la pile
Haut de la pile
Ad-5 Ad-4 PC2 PC1 Donne 2 Donne 1 Donne 0 Ad-3 Ad-2 Ad-1
SP
SP
Bas de la pile
Ad
Bas de la pile
Ad
b) tat de la pile aprs sauvegarde automatique du compteur programme PC (PC1 (8bits) + PC2 (8bits) = PC (16 bits):
La rcupration dune donne sur la pile peut tre elle aussi automatique ou ralise avec une instruction programme par le programmeur.
Ad-5 Ad-4
Haut de la pile
SP
Bas de la pile
Ad
On voit que la dernire donne rcupre est ncessairement le dernire donne enregistre sur la pile do lappellation LIFO (Last In, First Out) pour ce type de mmoire. Cest lutilisateur qui fixe la zone de RAM affecte la pile en utilisant une instruction dinitialisation du pointeur de pile (chargement de la valeur du bas de la pile qui est ladresse la plus haute) laide dune instruction spcifique. Avec certains Cs (PIC par exemple), lutilisateur na pas accs au pointeur de pile. La gestion de la pile est toujours automatique. Exemple dutilisation On dispose dune RAM de 512 octets, on choisit de rserver les 256 octets infrieurs des donnes tandis que les 256 octets suprieurs sont rservs la pile. Remarque La pile progresse vers le haut au fur et mesure des empilages. Par consquent si plus de 256 octets, pour lexemple prcdent, sont empils successivement, les donnes enregistres dans la zone de RAM situe sous la pile peuvent tre crases : il y a dbordement de la pile (stack overflow).
0000h 256 octets de donnes 00FFh 0100h 256 octets de pile SP
Bas de la pile
01FFh
RAM
Fig. 36 : Exemple dinitialisation de la pile
P et C : une introduction
P. Morenton
25/11/06
36
adresses 1000h
MEMOIRE PROGRAMME
1200h
1200h+N
2 1400h
1200h+N
On voit que ladresse de retour au programme appelant est diffrente pour les 3 excutions du sous programme. Cette adresse est mmorise dans une zone mmoire particulire : la pile. Lorsquun sous programme appelle un autre sous programme, la pile contient 2 adresses de retour. La gestion de la pile est automatique. Avec la plupart des Ps/Cs, il ne faut pas oublier dinitialiser le pointeur de pile. Avec un PIC, il ny a pas de pointeur de pile. Avec un PIC 16F876/877, la pile ne peut contenir que 8 adresses de retour. Les ressources du P (registres, ) utilises lors de lexcution du programme principal et dun sous programme sont les mmes. Il est ncessaire de sauvegarder les registres modifis par le sous programmes dont les contenus sont utiliss dans la suite du programme principal. La pile est utilise pour sauvegarder les informations prcdentes.
P et C : une introduction
P. Morenton
25/11/06
37
Ladresse de retour (contenu du compteur programme) et les registres sauvegards constituent le contexte. 9.2.2) DROULEMENT DTAILL excution dune partie du programme principal instruction dappel du sous programme avec ladresse de dbut de ce sous-programme le P effectue sauvegarde dans la pile de ladresse de retour au programme principal (empilage). Cette opration prend plusieurs cycles. Elle est effectue de faon automatique et transparente lutilisateur. le P place sur le bus dadresse ladresse du dbut du sous programme et recherche le 1er code opratoire. Lexcution du sous programme commence. Les premires instructions peuvent permettre une sauvegarde de certains registres en RAM. excution du sous programme. Les dernires instructions peuvent permettre une rcupration des registres sauvegards en fin de sous programme, instruction de retour au programme principal le P rcupre dans la pile ladresse de retour au programme principal (dpilage). le P place sur le bus dadresse ladresse de la suite du programme principal et recherche le code opratoire de linstruction. Lexcution de la suite du programme principal a lieu. Le pointeur de pile doit imprativement avoir t initialis en tout dbut de programme principal. 9.2.3) CRITURE ET APPEL DE SOUS PROGRAMME DANS LE PROGRAMME SOURCE Ces oprations sont trs faciles. Avec lutilisation dtiquettes, il ny a mme pas besoin de connatre ladresse physique exacte de lemplacement dun sous programme. Voir le Structure dun programme source. Il ne faut pas oublier dinitialiser le pointeur de pile. Exemples en langage d'assemblage 68HC11 JSR NomProgramme* (Jump to SubRoutine) en langage d'assemblage 80C196 CALL NomProgramme
retour au programme principal, RTS RET place en fin de sous pro(ReTurn from Subroutine) (RETurn) gramme * NomProgramme est traduit lors de l'assemblage par l'adresse de dbut du sous programme
9.3) INTERRUPTION
9.3.1) PRSENTATION Le P excute les instructions en squence. Souvent, il est ncessaire dinterrompre un programme sur rception dun signal externe imprvisible (par exemple un poussoir enfonc par un oprateur).
P et C : une introduction
P. Morenton
25/11/06
38
Un autre programme, dit gestionnaire dinterruption (interrupt handler) ou programme de traitement dinterruption (Interrupt Service Routine, ISR) ou plus simplement programme dinterruption, associ lappel est alors excut.
Programme en cours Excution de B Excution de A Excution de A
A : programme principal B : programme d'interruption
A t
Fin de B
Une fois que linterruption t servie (excute) le programme principal reprend son cours partir de lendroit o il a t interrompu. Remarque A peut tre interrompu nimporte quel instant par B (vnement imprvisible), A et B utilisent les mmes registres de lU.C., 2 possibilits selon les P / C : tous les registres sont sauvegards automatiquement avant le dbut du programme dinterruption puis restitus avant le retour au programme principal. Ceci nest possible quavec des P / C avec peu de registres internes (ex : 68HC11) seul le compteur programme est sauvegard puis restitu (ex : PIC). Le programmeur doit prendre soin de sauvegarder puis restituer les registres quil va modifier. Il est indispensable de mmoriser ladresse de linstruction excuter dans le programme principal lors du retour du programme dinterruption. Cette mmorisation seffectue dans la pile. Les interruptions sont utilises : Avec les units dchanges pour la gestion des changes. Ex : sur une liaison avec un priphrique lent (tel quune imprimante), laccus de rception de ce dernier lenvoi dune donne peut dclencher une interruption. Le traitement de celle-ci consiste envoyer une nouvelle donne. Avant que le priphrique accuse rception, le P a le temps de faire autre chose. Avec des interfaces dun P (internes dans le cas dun C) tels que temporisateur, (voir plus loin)
P et C : une introduction
P. Morenton
25/11/06
39
EXECUTION DE A
Fig. 38 : Sauvegarde puis restitution du contexte de A
On note une certaine similitude entre les sous-programmes et les routines dinterruption mais pour les interruptions : lappel est dclench par un vnement externe, la sauvegarde des registres est indispensable (sur certain P ou C comme le 68HC11 cette sauvegarde ainsi que la restitution des registres est automatique). Les registres et le compteur programme sont sauvegards dans la pile. La procdure est transparente lutilisateur qui doit cependant sassurer du bon fonctionnement de la pile. 9.3.3) DROULEMENT DTAILL lorsquune demande dinterruption intervient, le P termine linstruction en cours le P inhibe les autres demandes dinterruption le P sauvegarde dans la pile le compteur programme et avec certains P/C tous les registres (empilage) le P place sur le bus dadresse ladresse du dbut du programme dinterruption. 2 faons de procder : le P charge dans le compteur programme le contenu dune zone mmoire programme (2 octets pour une adresse sur 16 bits) parfaitement dfinie qui est fonction de linterruption demande. Ce contenu correspond ladresse de dbut du programme dinterruption. Ces oprations prennent plusieurs cycles et sont transparentes lutilisateur. Ce mcanisme correspond la vectorisation des interruptions. A chaque interruption correspond un vecteur dinterruption. (mcanisme utilis par le 68HC11, le 80C196, etc.) le P place sur le bus dadresse une adresse unique pour toutes les sources dinterruptions (ex : sur un PIC, ladresse est 4). Lutilisateur doit crire dans son programme dinterruption des instructions pour rechercher la source de linterruption. aprs avoir plac sur son bus dadresse ladresse du programme dinterruption quil vient de charger, le P recherche le code opratoire de la 1re instruction. Le programme dinterruption sexcute ensuite.
P et C : une introduction P. Morenton 25/11/06
40
en fin de programme dinterruption, une instruction demande le retour au programme principal le P rcupre depuis la pile tous les registres (avec certains P/C uniquement) et le compteur programme (dpilage). le P autorise les autres demandes dinterruption le P place sur le bus dadresse la valeur rcupre et recherche le code de la prochaine instruction lexcution du programme en cours avant linterruption se poursuit 9.3.4) IDENTIFICATION DES SOURCES DINTERRUPTION Les sources dinterruption sont : les units dchanges et priphriques, connectes en externe au P (cas dun systme P) ou internes au C. Ceci permet, par exemple, de demander une interruption ds quune nouvelle information a t applique en entre dune unit dchange des vnements tels que front ou tat appliqus directement sur le P ou la CPU du C sans passer par une unit dchange Les connexions pour les demandes dinterruption sont ralises de la faon suivante : Reprsentation simplifie pour les interruptions (bus, mmoires, non reprsents) pour un C pour un systme P
unit d'change interne 1 unit d'change interne 2 ... unit d'change 1 unit d'change 2 ...
CPU
C
Fig. 39 : liaisons de demandes dinterruption dans C
Systme P
Fig. 40 : liaisons de demandes dinterruption dans un systme P
Dans le systme P de lexemple, une demande dinterruption provoque par lunit 1 ou lunit 2 ou une autre unit active lentre dinterruption INT2. Un C peut reconnatre chaque source dinterruption. A chacune de ces sources, on peut attribuer un programme dinterruption diffrent. Lidentification dune source dinterruption permet de lui affecter une priorit. Un C peut disposer dun grand nombre de sources dinterruption identifiable (ex : 21 pour le 68HC11). La plupart des Ps et les CPUs de certains Cs disposent dassez peu dentres dinterruption (2 4), alors quil y a souvent plus de sources dinterruption. La CPU dun PIC ne dispose que de 2 entres dinterruption. Il nest pas possible didentifier directement chaque source dinterruption. Dans lexemple prcdent, lorsquune unit dchange demande une interruption, cest lentre INT2 qui est actiP et C : une introduction P. Morenton 25/11/06
41
ve. Le programme dinterruption associ devra recherche lunit qui a demand linterruption, en lisant successivement leurs registres internes dtat. Pour quun P puisse identifier rapidement une source dinterruption, il faut lui adjoindre un circuit spcialis, le contrleur dinterruption. 9.3.5) PRISE EN COMPTE DES INTERRUPTIONS Certaines interruptions peuvent tre masques, cest--dire quelles ne sont pas prises en compte. Pour les interruptions masquables, lautorisation ou linhibition peut se faire : globalement individuellement autorisation / inhibition interruption globale, pour toutes les sources dinterruption masquables individuelle contrle un bit dun registre de contrle dans un P ou la CPU dun C un bit ddi chaque interruption dans un registre de contrle dans un P ou la CPU dun C
Remarque : certains Cs (tel le PIC) ont 3 niveaux : autorisation globale, autorisation pour tous les priphriques, autorisation individuelle Les demandes d'interruptions peuvent tre mmorisables ou non. Si une demande intervient un court instant puis disparat et n'est pas mmorise, elle n'est pas prise en compte si les interruptions sont masques. Si elle est mmorise, elle sera prise en compte et servie ds que les interruptions seront autorises. 9.3.6 TRAITEMENT DES INTERRUPTIONS / IMBRICATION DES INTERRUPTIONS En plus de ce qui est indiqu en 9.3.2 et 9.3.3, lors du traitement d'une interruption, le P inhibe globalement toute demande d'interruption masquable, par positionnement dun bit dans un registre de contrle. Ceci permet d'viter qu'une nouvelle interruption intervienne de faon indsirable lors du traitement d'une interruption prcdente. En fin d'interruption, les interruptions sont de nouveau globalement autorises. Le programmeur a le choix de prvoir la possibilit d'interruptions imbriques, en validant globalement les interruptions l'aide d'une instruction dans le programme d'interruption. Le programme est dans ce cas beaucoup plus difficile concevoir. Attention au risque de dbordement de pile
P et C : une introduction
P. Morenton
25/11/06
42
9.3.7) PRIORIT DES INTERRUPTIONS La plupart des Ps/Cs permettent dtablir des priorits entre interruptions. Certains Cs nont pas de priorit entre les interruptions (ex : PIC). La priorit des interruptions intervient lorsque plusieurs demandes d'interruptions sont en attente de traitement. Ceci correspond plusieurs cas : le programme est en droulement normal et plusieurs demandes surviennent avant leur prise en compte (fin de l'instruction en cours). une interruption est en cours de traitement avec inhibition globale des nouvelles demandes d'interruptions et plusieurs demandes surviennent avant la fin du traitement. L'interruption en attente servie en 1re est la plus prioritaire. Dtermination de la priorit dune interruption Dans un C, lordre de priorit est fix par le constructeur. Quelques fois, il est possible lutilisateur de modifier un ordre de priorit par dfaut, en crivant un mot dans un registre de configuration. Dans un systme P, il nexiste une priorit quentre les quelques entres dinterruption disponibles. Dans le cas o il y a de nombreuses units dchange, il est possible de fixer un ordre de priorit en intercalant un circuit spcialis, un contrleur dinterruption, entre le P et les units dchange,
9.3.8) LES INTERRUPTIONS DANS LE PROGRAMME SOURCE Avec des interruptions vectorises (cas le plus frquent), le programmeur doit crire les programmes dinterruption, et remplir la zone mmoire qui contient les vecteurs dinterruption (adresses de dbut des sous programmes dinterruption). Ceci seffectue de faon trs simple au niveau de lcriture du programme source, avec lemploi dtiquette qui permet de ne pas connatre ladresse physique exacte de dbut dun programme dinterruption. Voir sur la structure du programme source. La zone mmoire des vecteurs dinterruption est donne dans la documentation technique des Ps ou Cs. Avec des interruptions non vectorises et une adresse unique pour toutes les sources dinterruption (ex PIC), le programmeur doit crire le programme dinterruption partir de ladresse mentionne dans la documentation. Le programme dinterruption doit commencer par rechercher la source de linterruption. 9.3.9 ACQUITTEMENT DUNE INTERRUPTION Lorsquune demande dinterruption survient un bit spcifique ( flag ) cette demande est positionn dans un registre dtat. Cest ce bit qui entrane le traitement de linterruption. En fin de traitement dune interruption, il faut replacer le bit dans son tat initial pour viter que le P/C ne reparte en interruption : cest lacquittement de linterruption.
P et C : une introduction P. Morenton 25/11/06
43
P et C : une introduction
P. Morenton
25/11/06
44
Adresse vectorise
Aprs la RZ, le P effectue un certain nombre doprations puis charge le contenu dune zone mmoire dans le registre dadresse. Ce contenu correspond ladresse de dpart du programme principal ; il est sur 2 octets (dans 2 emplacements mmoire) pour un registre dadresse de 16 bits. Cette opration dure quelques cycles et est transparente au programmeur. Le contenu de la zone mmoire est ladresse de dpart ou vecteur du RESET Le P dpose ensuite le contenu du registre dadresse sur le bus dadresse et recherche le 1er code opratoire. Le programme sexcute. Exemple : le 68HC11 charge dans son registre dadresse le contenu des adresses mmoire FFFEh et FFFFh
Remarque : Certains P/C font la distinction entre les diffrentes commandes de RZ et disposent dun vecteur pour chaque RZ.
P et C : une introduction
P. Morenton
25/11/06
45
10) STRUCTURE INTERNE / MODLE LOGICIEL DUN P OU CPU DUN C 10.1) STRUCTURE INTERNE
Les structures internes dtailles des P varient assez fortement dun constructeur lautre, notamment cause de la prsence ou non de registres spcialiss (accumulateur, ) et des diffrentes faons de grer la mmoire (modes dadressage). Les structures internes des Ps sont souvent trs complexes, aussi les constructeurs ne donnent dans leurs notices techniques que des structures trs simplifies. Celles-ci permettent davoir une vue densemble des registres disponibles mais ne sont pas faites pour une comprhension du fonctionnement interne (qui est inutile lutilisateur). Exemple de structure interne : 80186 dIntel
A modifier Dans lunit dexcution (partie oprative mentionne prcdemment), on retrouve quelquesuns des lments mentionns en 6): lALU, le registre dtat. A est laccumulateur principal ; B, C et D peuvent avoir de multiples fonctions. SP est le pointeur de pile ; les registres BP, SI, DI sont lis au mode dadressage. Pour la partie dinterfaage avec le bus, le registre IS joue un peu le rle du compteur programme. Les registres CS, DS, ES, SS sont lis aux modes dadressage. Ladresse est ici dtermine en effectuant la somme de 2 registres avec le sommateur .
P et C : une introduction
P. Morenton
25/11/06
46
Les registres qui apparaissent ici ont tous t dcrits prcdemment. Le registre condition codes est un registre dtat associ aux accumulateurs A et B et un registre de contrle pour les interruptions.
47
une plus grande complexit matrielle et la mobilisation de broches du P pour les signaux dE/S spcifiques. Chaque interface est constitue, du point de vue de lutilisateur, de : un ou plusieurs registres de contrle (control register) permettant de dfinir son fonctionnement un registre dtat (status register) donnant des indications sur le droulement des oprations un ou plusieurs registres permettant le transfert des donnes, gnralement appels registres de donnes (data register) ou registres dentre / sortie (input / output register). Chaque registre a une adresse spcifique.
48
11.3.2) CHANGES AVEC PROTOCOLES DE COMMUNICATION Il existe plusieurs possibilits. Nous naborderons quun exemple. A chaque port sont associs des signaux pour la gestion des changes. Ce type dchange et les signaux ncessaires sont dits poigne de main (handshake). Exemple de Protocole pour des changes unidirectionnels
donne prte transmettre PORT D'UNE INTERFACE Priphrique
C ou systme P
Fig. 43 : Liaisons avec poigne de main entre interface et priphrique
le P crit des donnes dans le registre de sortie du port activation de la broche donne prtre transmettre le priphrique lit la donne et active la broche donne lue . lactivation de la broche donne lue entrane : la modification dun bit dtat dun registre associ au port la transmission dune demande dinterruption (si elle a t autorise) la dsactivation de la broche donne prte transmettre le P ou la CPU du C peut prsenter une nouvelle donne, aprs avoir auparavant lu le registre contenant le bit dtat pour rinitialiser celui-ci et annuler la demande dinterruption. Le fonctionnement pour lautre sens de fonctionnement se dduit facilement de ce qui prcde. Pour les diffrents fonctionnements possibles, se rfrer la documentation de chaque interface ou C.
P et C : une introduction
P. Morenton
25/11/06
49
mission de donnes
horloge Sortie srie Registre dcalage
Rception de donnes
horloge Entre srie Registre dcalage
La sortie srie (metteur) ou lentre srie (rcepteur) seffectue la cadence dune horloge (1 bit par priode dhorloge). Lhorloge est souvent gnre de faon interne, partir de loscillateur quartz du P ou C. Il existe souvent plusieurs options de fonctionnement. Le choix retenu seffectue par criture dun mot dans un (ou plusieurs) registre(s) de contrle de linterface srie. Aprs programmation, lenvoi dun mot seffectue par une criture dans le registre de sortie ; la lecture dun mot reu seffectue par lecture du registre dentre. Pour effectuer ces oprations aux bonnes dates, on peut utiliser les interruptions gnres par une fin dmission ou de rception (voir 9.3) Il est indispensable que le front de lhorloge qui commande le dcalage en rception ait lieu lorsque le bit transmis est valide, cest--dire suffisamment longtemps aprs le changement dtat du bit prcdent et suffisamment longtemps avant le changement dtat du bit suivant. La communication entre rcepteur ncessite que les horloges soient : de mme frquence et synchrones ou de frquences quasi identiques et quasiment synchrones durant le temps utile de la communication Selon que lon adopte une solution ou lautre, on obtient 2 types de liaisons : Les liaisons synchrones : la transmission est faite au rythme dun signal dhorloge transmis avec les donnes. Les paquets de donnes (un paquet = un mot de la taille du bus de donnes) peuvent tre envoys les uns la suite des autres, sans temps mort, de manire continue. Les liaisons asynchrones : la transmission est faite de faon discontinue par paquet. Chaque paquet est de longueur constante et il est repr par un code de dbut et de fin. Durant la transmission dun paquet, le rcepteur gnre une horloge de frquence quasi identique celle de lmetteur, avec les fronts actifs pour le dcalage correctement placs par rapport aux donnes. En gnral, lmetteur et le rcepteur doivent avoir t programms pour fonctionner la mme vitesse de transmission. 11.4.2) INTERFACES SRIES ASYNCHRONES Elles sont trs utilises en informatique. Les ports srie des ordinateurs PC sont de ce type, la norme RS232. Beaucoup de C intgrent une interface de ce type, mais ne sont toutefois pas
P et C : une introduction
P. Morenton
25/11/06
50
compatibles sur les niveaux de tension. Il suffit dajouter un circuit externe pour assurer cette compatibilit. Comme lhorloge nest pas transmise, il faut que lhorloge de rception soit correctement cale par rapport lhorloge dmission. La figure ci-dessous montre une transmission avec une horloge de rception correctement cale par rapport lhorloge dmission et avec une horloge de rception incorrecte.
H mission donnes transmises H rception correcte H rception mauvaire 0 1 1 0 1 0 0 1 donnes lues t 0 1 1 0 1 0 0 1 t
t donnes lues
Pour synchroniser lhorloge rception sur celle dmission, le mot transmettre est encadr dun bit de dbut et dun bit de fin. Le mcanisme de synchronisation est transparent lutilisateur. La norme RS232 permet plusieurs options et plusieurs vitesses de transmission. Un registre de contrle est donc associ linterface srie asynchrone pour la programmation de la configuration dsire. Les connexions de la norme RS232 comprennent en plus des liaisons pour les donnes des signaux de contrle des changes. Les interfaces srie ne grent gnralement pas ces signaux. Voir documentation de la norme RS232. 11.4.3) INTERFACES SRIE SYNCHRONES Elles sont utilises pour : la communication entre 2 Cs la communication entre 1 C et un circuit tel que horloge temps rel, mmoire, Les informations peuvent tre changes avec des dbits levs et trs peu de fils de liaisons. Les informations sont vhicules en continu, sans quil soit ncessaire de placer des bits de dpart et darrt, comme avec une liaison asynchrone. Les changes se font entre un matre et un ou plusieurs esclaves. Les interfaces srie synchrones sont prvues pour que les changes se fassent avec lhorloge dlivre par le circuit matre. A chaque priode dhorloge : une donne est envoye du matre vers lesclave une donne est retourne de
P et C : une introduction P. Morenton 25/11/06
51
lesclave vers le matre Toutes les donnes changes nont pas toujours une signification (ex : lorsque le matre veut uniquement crire dans un registre de lesclave, ce qui est retourn na aucune importance). Un protocole trs strict est respecter. Il nexiste pas de normes pour les changes srie synchrones, les associations de circuits via une liaison srie synchrone ne sont souvent possibles quentre membres dune mme famille chez un mme constructeur. Une interface synchrone peut se programmer (vitesse de transmission, position des fronts de lhorloge par rapport aux donnes) en crivant dans son registre de contrle.
52
11.6.2) CNA DANS UN C Ils sont rarement intgrs dans un C. Certains C (ex : 80C196) intgrent un gnrateur de signaux rectangulaires moduls en largeur dimpulsion (MLI ou PWM, Pulse Width Modulation). Il est possible de raliser un convertisseur analogique numrique en plaant en sortie de ce convertisseur un filtre passe bas qui ne laisse passer que la valeur moyenne. Pour plus de dtail, voir documentation des C disposant de cette possibilit. 11.6.3) CNA EXTERNE POUR UN C Si le C travaille en mode circuit seul , la connexion dun CNA accs parallle sur un port occupe beaucoup de liaison (8 pour un CNA 8 bits, plus ventuellement des signaux de contrle du fonctionnement). Pour diminuer le nombre de liaisons ncessaires, les CNA accs srie se dveloppent de plus en plus. Ils ne ncessitent que 2 ou 3 liaisons et peuvent se connecter sur le port srie synchrone ou sur des sorties dun port parallle. Dans ce dernier cas, le signal dhorloge est cr par logiciel.
53
au front montant, copie automatique du contenu du compteur dans un registre spcifique par logiciel (procdure dinterruption par exemple), recopie du registre spcifique dans un emplacement mmoire. Le contenu du compteur C1 correspond la date t1. reprogrammation ventuelle du timer (attente dun nouveau front, ) au front descendant, copie automatique du contenu du compteur dans un registre spcifique. Le contenu correspond C2. par logiciel, calcul de t2-t1. Lintervalle de temps mesur vaut (C2-C1)T, avec T= priode de lhorloge du compteur. Pour cette procdure, il faut de plus sassurer que le contenu du compteur nest jamais pass par 0 (dbordement)
54
Selon les C une partie du bus de donnes ou sa totalit est multiplexe avec le bus dadresse Exemple : Le C 80C196 peut fonctionner, en mode tendu, dans les cas suivants
80C196
Bus de contrle
80C196
Bus de contrle
PORT 3 PORT 4
PORT 3
Les chronogrammes des bus et des signaux de contrle sont les suivants :
ALE (Adress Latch Enable) AD0-15 Adresse Donne
ALE (Adress Latch Enable) AD0-7 AD8-15 Poids faible de l'adresse Donne
Les informations prsentes dans la 1re partie du cycle (adresse complte ou bits de poids faible de ladresse) doivent tre mmorises sur le front descendant de ALE (Address Latch Enable). Ceci est facilement ralisable avec un (ou 2) registre(s) de type verrou D (74xx373). Dans la 2me partie du cycle : dans le cas du bus 8 bits la partie haute de ladresse est disponible en AD8-15 la partie basse est disponible en sortie du circuit de mmorisation externe la donne est disponible en AD0-7 dans le cas de bus 16 bits ladresse est disponible en sortie du circuit de mmorisation la donne est disponible en AD0-15
P et C : une introduction
P. Morenton
25/11/06
55
le circuit dhorloge pour le squenceur du P ou C. Il est aussi utilis pour certaines interfaces le circuit dinitialisation la mise sous tension ou rnitialisation aprs dfaut (baisse de la tension dalimentation, ) les connexions des entres dinterruption Dans certains cas, il faut aussi rajouter : les tensions de rfrences pour le convertisseur A/N et N/A les connexions pour les modes de fonctionnement, Exemple : schma pour un C 68HC11 en mode tendu avec tous les composants ncessaires. Ici une mmoire EPROM de 8ko est utilise en externe.
On distingue tous les composants et liaisons mentionns plus haut, avec notamment : le circuit MC34064 dinitialisation la mise sous tension et de rinitialisation en cas de baisse de la tension dalimentation les tensions de rfrence pour le CAN VRH et VRL ainsi que leur dcouplage les liaisons pour fixer le mode (ici mode tendu), avec MODA et MODB Certaines broches sont connectes des rsistances de tirage pour que leurs potentiels soient fixs. Ces broches restent utilisables. Certaines broches ont une double fonction choisie par programmation. Par exemple, PE/AN correspond soit un port // soit aux entres analogiques pour le CAN.
P et C : une introduction P. Morenton 25/11/06
56
Les adresses et les donnes sont sorties sur des bus externes. Les poids faibles des adresses sont multiplexs avec les donnes. Le circuit 74HC373 permet de mmoriser les poids faibles des adresses. Une mmoire programme de 8 koctets a t place en externe. Le dcodage dadresse est ralis par une porte Nand partir dA13 et A15. Une autre porte Nand est utilise pour laborer le signal /OE partir des signaux de contrle R//W et E. Les rsistances de tirage sur le bus de donnes ne sont pas indispensables.
57
Pour plus de dtail voir document sur la compilation, lassemblage et ldition de liens.
ADRESSE_COURANTE FFD6h (zone PROM) REMPLIR_AVEC DOUBLE_OCTET ProgInter1 REMPLIR_AVEC DOUBLE_OCTET ProgInter2
ADRESSE_COURANTE 0000h (zone RAM) Var1 RESERVER OCTET 1 Var2 RESERVER OCTET 2
Structure de la section programme Lemploi dtiquettes permet lutilisateur de saffranchir des adresses exactes des instructions pour les sauts, branchements conditionnels, appels de sous programmes. ADRESSE_COURANTE F000h 1re instruction du prog. principal 2me instruction .. Rep1 nme instruction SI RSULTAT=0, SAUT Rep1 APPEL SousProg1
P et C : une introduction P. Morenton
la nme instruction est repre par une tiquette (Rep1) qui correspond son adresse SI RSULTAT=0, SAUT est une instruction. Rep1 correspond ladresse de branchement. Lutilisateur na pas connatre ladresse exacte de la nme instruction. APPEL est linstruction dappel de SousProg1. Lutilisateur na pas connatre ladresse exacte de la 1re instruction
25/11/06
58
dernire instruction du prog. princ. de SousProg1 SousProg1 1re instruction 2me instruction dernire instruction du sous-prog. ProgInter1 1re instruction 2me instruction dernire instruction du dinter. SousProg1 est une tiquette qui correspond une adresse. Celle-ci est dtermine lors de la phase dassemblage.
ProgInter1 est une tiquette qui correspond une adresse. Celle-ci est dtermine lors de la phase dassemblage. ProgInter1 peut tre utilise pour placer le prog. vecteur dinterruption en mmoire.
FLUX DE CONCEPTION
obtention du code placer en mmoire partir dun programme crit avec des mnmoniques puis assembl dun programme crit dans un langage de haut niveau (C, ) puis compil essais / mise au point : le P et sa mmoire programme associe ou le C est remplac par un mulateur qui permet une excution contrle du programme
P et C : une introduction P. Morenton 25/11/06
59
SYSTME MINIMUM
Un systme minimum est constitu de : une unit dchange : les interfaces dE/S. Elles sont vues comme un ensemble de registres accessibles. une unit centrale de traitement CPU une unit de stockage : les mmoires Les units sont interconnectes par des bus. Larchitecture la plus courante est de type Von Neuman. Dans ce cas, on dispose de : un bus de donnes sur lequel sont vhiculs : les codes des instructions les donnes (constantes, variables) des informations pour le calcul des adresses un bus dadresses sur lequel sont vhicules les adresses des mmoires et des diffrents registres des interfaces un bus de contrle qui comprend tous les signaux ncessaires pour la gestion des changes
Bus de contrle Dcodeur d'adresse
Interface parallle
OE
RD/WR
RD/WR
Bus de donne
60
Les registres internes dun P permettent de mmorisation temporairement des donnes et ils sont aussi utiliss pour ladressage. Les principaux registres sont : accumulateur registre dadresse compteur ordinal registre instruction registre dindex (pour ladressage index) registre pointeur de pile
JEU DINSTRUCTIONS 2 types de P / C : CISC : (Complet Instruction Set Computer) : jeu dinstruction tendu RISC : (Reduced Instruction Set Computer) : jeu dinstruction rduit et grande vitesse dexcution (grce une architecture particulire Harvard) Les grandes catgories dinstructions sont : Instructions de transfert entre les registres internes et les registres ou emplacements mmoire externes Instructions de traitement (+, -, ET, OU, dcalages, etc.) Instructions de branchement et de rupture de squence : branchement inconditionnel ou conditionnel (en fonction des bits dtats) MODES DADRESSAGE Le mode dadressage concerne la faon dont est dsign loprande. Il se traduit par certaines rgles dcriture au niveau des mnmoniques et des oprandes. Ex : Avec la syntaxe assembleur Motorola pour P / C 8 bit les modes dadressages ne changent pas le mnmonique dune instruction. Seules changent les critures de loprande ou des informations pour dterminer son adresse. mode dadressage inhrent ou implicite immdiat commentaire exemple exemple criture en explication assembleur CLRA (CleaR A)
instruction sans oprande ou avec oprande connu avec mnmonique oprande immdiatement aprs le mnmonique (en mmoire programme aprs le code opratoire). loprande est dsign par son adresse complte
LDAA #$10
tendu
LoaD A = mettre dans A ; # est la marque de ladressage immdiat. Mettre 10 (en hexa) dans A LDAA $4000 Mettre dans A le contenu de ladresse 4000 (en hexa)
61
P et C : une introduction
P. Morenton
25/11/06
index
loprande est dsign par son adresse gale au contenu dun registre dindex + une valeur (ici directement spcifie)
LDAA 4,X
LA PILE La pile est une zone de RAM utilise pour sauvegarder des donnes temporaires. Elle est gre laide dun pointeur de pile contenu dans un registre interne au P (Stack Pointer SP). Celui-ci dsigne lemplacement libre de la pile pour une sauvegarde de donne. La sauvegarde dune donne dans la pile peut seffectuer automatiquement lors de certaines tapes du droulement dun programme ou laide dune instruction crite par le programmeur. Lors dun enregistrement, la donne est empile (place sur le haut de la pile) Lors dune restitution, la donne est dpile (retire du haut de la pile) Le pointeur de pile est automatiquement gr par le P. Lutilisateur doit uniquement spcifier le bas de la pile (adresse haute) avec une instruction particulire. Lutilisateur ne peut directement imposer une limite au haut de la pile, laide dune instruction particulire par exemple. DROULEMENT NORMAL Un programme est compos dun programme principal et de sous programmes. Le droulement du programme est le suivant : excution de la 1re partie du programme principal (PP), appel sous programme 1 (SP1) excution SP1, retour au PP excution 2me partie PP, appel SP2 excution SP2, retour au PP excution 3me partie PP Lappel dun sous programme se fait avec une instruction spcifique suivie de ladresse du sous programme. Le retour au programme principal se fait avec une instruction spcifique, place en fin de sous programme.
P et C : une introduction
P. Morenton
25/11/06
62
Lors de lappel dun sous programme, ladresse de retour au programme principal est mmorise dans la pile. Lors du retour dun sous programme, ladresse de retour est recharge dans le registre dadresse depuis la pile. Ces oprations sont automatiques et transparentes lutilisateur. Le pointeur de pile doit imprativement avoir t initialis en dbut de programme. INTERRUPTION Une interruption permet dinterrompre le droulement normal dun programme pour excuter un programme dinterruption. Une demande dinterruption est lie un vnement extrieur. Emploi : Units dchanges (interfaces), Ex : un vnement extrieur indique au P, via une interface, quune imprimante a bien reu le caractre transmis. Le programme dinterruption peut alors procder un nouvel envoi.
P et C : une introduction
P. Morenton
25/11/06
63