mp2

Copyright
© 2000-2015 LHERBAUDIERE


8 pages à l'impression
Hit-Parade version initiale 2000
AVERTISSEMENT dernière mise à jour
18 mars 2013

cliquez sur le mot avertissement pour connaitre une info essentielle avant de lire ce module et n'hésitez pas à cliquer en bas de page sur l'icone sommaire du site ça vous ouvrira d'autres perspectives

introduction au microprocesseur et circuits assimilés

deuxième partie (2/5) : l'environnement du µP

microprocesseur un boitier vu de l'extérieur
bus et signaux de contrôle communiquer avec l'extérieur
environnement du µP les mémoires, les interfaces
fonctionnement simplifié du µ P le cycle fetch et la suite
les informations traitées des codes, nombres, mots, etc.
une collection d'icônes pour visiter tout le site

un microprocesseur type

Un microprocesseur est le composant essentiel d'un microsystème (c'est à dire d'un instrument contrôlant quelque chose via un programme figé). Par rapport à la logique câblée, qui pourrait remplir les mêmes fonctions, il présente divers avantages: C'est un circuit intégré comportant l'équivalent de 5000 transistors (ex MC 6800 de Motorola) jusqu'à environ 400 millions pour les dual-cores de dernière génération (début 2008) en technologie 45nm chez Intel, lesquels sont assemblés pour permettre l'exécution d'opérations arithmétiques ou logiques, de décalages sur des mots binaires, de comparaisons, prises de décision... Notons que tout seul un µP ne peut rien faire, c'est comme un moteur de voiture sans roues, sans boite de vitesse et sans carosserie... Sur la figure ci-dessous nous avons fait figurer en les réorganisant par groupes de fonctions les diverses broches d'entrée/sortie d'un microprocesseur 8bits typique. On retrouvera sensiblement le même type d'organisation sur un µP de 64 ou 128 bits, mais le nombre de broches sera d'autant plus important et il sera plus difficile de s'y retrouver. C'est pourquoi dans le cadre de cet exposé pédagogique nous nous limiterons dans un premier temps à des exemples huit bits.

exemple de microprocesseur type (huit bits)
Notons qu'un certain nombre de signaux sont surlignés, cela signifie que c'est le niveau bas (0V) qui correspond à l'activité de la broche correspondante. Ainsi si HALT est à zéro le µP est arrêté et informe l'extérieur par le biais de cette patte. Les flèches sur le schéma indiquent le sens des signaux, entrant ou sortant du µP quand il s'agit de signaux unidirectionnels.


les bus et les signaux de commande

Le µP pris en exemple ici communique avec l'extérieur via 3 bus différents :

le bus d'adresses

De A0 à A15 on dispose de lignes unidirectionnelles qui permettent au µP de sélectionner une position de mémoire, ou un registre d'un coupleur d'interface. Dans cet exemple on dispose de 16 lignes donc de 65536 positions. Précisons que dans un µP récent on trouvera 32 voire 64 lignes d'adresses ce qui augmente très sensiblement les possibilités

le bus de données

De D0 à D7 on a des lignes bidirectionnelles sur lesquelles se font les échanges de données entre le µP et ses périphériques. Ici encore il s'agit d'un µP minimaliste puisque fréquemment les données comportent dorénavant 32 bits et même parfois jusqu'à 128. Cependant en métrologie industrielle on a rarement besoin d'une telle capacité. Précisons que nombre d'applications n'utilisent effectivement que 12 bits tandis qu'une minorité atteignent une résolution de 20 bits, au delà les coûts des composants périphériques sont parfaitement dissuasifs et leur gestion fiable relèvera de "l'usine à gaz" incompatible avec des processus industriels.

le bus de commandes

Ce bus transmet un certain nombre de signaux hétérogènes qui assurent un fonctionnement cohérent du µP et des divers circuits qui lui sont liés. Certains de ces signaux se retrouvent sur tous les µP, d'autres seront différents car une même fonction peut parfois être traitée de diverses façons, enfin certains seront spécifiques d'un µP et on ne leur trouvera pas d'équivalent sur les autres.

L'analyse du bus de commandes montre qu'on peut le couper en 4 parties: A titre indicatif nous donnons ci-dessous la signification de chacun de ces signaux, étant bien entendu qu'il s'agit d'un exemple typique (mais qu'il existe actuellement des milliers de type de µP différents de par le monde):

l'environnement du µP

mémoires ROM et RAM

Un boitier de mémoire RAM (random access memory) va comporter n registres de x bits (8 dans notre exemple, mais ce peut être 16 ou plus). Pour accéder à une position mémoire (un registre) il faut un certain nombre de lignes d'adresse. Dans notre exemple le µP en possède 16 ce qui correspond à 64Koctets, mais la mémoire peut en comporter moins , ainsi une RAM de 32Kx8 n'en comportera que 15. Si l'on associe au µP plusieurs boitiers de mémoire, il n'est pas utile de les mettre tous en action puisque l'adresse que l'on veut sélectionner est unique et se trouve donc dans un seul des boitiers, pour cela on utilisera en conjonction avec le bus d'adresse l'entrée chip select CS. L'entrée R/W permet de définir si la case accédée va être lue ou écrite. Dans une mémoire ROM (read only memory) qui n'est accessible qu'en lecture cette entrée R/W n'existe evidemment pas.

.......
fig . mémoire RAM et coupleur d'interface

périphériques

Les autres dispositifs reliés au µP le sont généralement par le biais d'un coupleur d'interface qui devra établir la compatibilité entre les entrées/sorties du µP et du périphérique, ce qui implique que le coupleur soit lui même programmable afin de lui permettre d'être adaptable à plusieurs types de périphériques. Il faut en effet préciser: En conséquence un coupleur comportera 4 types de registres accessibles par l'utilisateur: Ainsi que le montre la figure ci-dessus, les signaux d'interface entre µP et coupleurs comprennent un signal CS (Chip Select), les lignes de sélection des registres qui proviennent du bus d'adresses du µP, la sélection en entrée d'une donnée (R/W), le bus de données et une sortie de demande d'interruption IRQ

Entre le coupleur et le périphérique on trouvera un bus de données, des lignes de commande et d'état du périphérique qui informent le périphérique que le µP va lui adresser une donnée ou qui constatent l'inverse. Ces lignes assurent aussi le contrôle d'émission/réception du périphérique.

mode d'exploitation

Ils sont multiples: mise au point

L'architecture matérielle étant réalisée, il faut écrire le programme de gestion de l'application. Il est rarissime qu'il fonctionne du premier coup, aussi on va provisoirement remplacer la ROM par une RAM ou une EEPROM, c'est à dire un dispositif dans lequel on peut aisément écrire et réécrire, afin de faciliter les modifications.

En pratique on disposera d'un système de développement comportant un microordinateur complet, une imprimante et un émulateur, c'est à dire un dispositif assez sophistiqué qui va temporairement remplacer le µP de l'application et en simuler les entrées/sorties sous le contrôle du microordinateur. Une fonction généralement très utile dont dispose l'émulateur est le mode pas à pas qui permet d'examiner tranquillement ce qui s'est passé lors de la simulation et de comprendre où se trouve l'erreur. L'autre intérêt majeur de l'émulateur est qu'il est protégé et qu'il ne craint pas les erreurs de cablage à la différence du µP.

La procédure de mise au point consiste à effectuer un programme de test vérifiant séparément la bonne exécution des diverses fonctions du système. Ce n'est que lorsque chacune marche que l'on peut assembler les divers programmes élémentaires en un programme complet que l'on pourra alors transférer dans une ROM.


fonctionnement simplifié du µP

Nous allons ici tenter d'expliquer le fonctionnement d'un µP relativement simple (typiquement 8 bits).

constitution

Un µP comporte 3 parties principales : une unité de contrôle, une unité arithmétique et logique (ALU) et un certain nombre de registres, le tout relié par un réseau complexe de bus interne muni de nombreux aiguillages. La figure ci-dessous est une représentation simplifiée dans laquelle on a omis volontairement, dans un souci de clarté du schéma, les lignes de commande de lecture ou de chargement des registres ainsi que les aiguillages sur les bus communs. On a simplement figuré le sens de circulation de l'information sur chaque portion de bus parfois unidirectionnel parfois bidirectionnel. La conception du système est prévue pour réduire au maximum le travail de l'unité de contrôle à de simples opérations élémentaires.

fig. structure interne d'un microprocesseur
L'unité de contrôle UCT décode les instructions envoyées par la mémoire de programme et élabore les signaux de commande indispensables au traitement de cette instruction.

l'ALU (unité arithmétique et logique) se charge de l'exécution des opérations arithmétiques et logiques.
Les registres sont de deux types : ceux accessibles par le programme et ceux qui ne le sont pas. Seuls les premiers nous intéressent ici, ils comportent : cycle Fetch

Un µP sous tension va travailler, mais seulement si on lui en donne l'ordre en "levant un drapeau" (par analogie avec les courses automobiles de formule1). Ensuite le µP peut démarrer.

Admettons que le compteur de programme (CP) contienne la valeur 0800H (en hexadécimal sur 16 bits). Ce nombre représente l'adresse de la première instruction à effectuer. Pour identifier cet ordre le µP va devoir en premier lieu aller le chercher (to fetch en anglais) ce qui implique toute une succession d'opérations élémentaires. Notons qu'en interne le bus de notre µP est sur 8 bits, ce qui va impliquer 2 phases pour transmettre une adresse qui comporte 16 bits. On va donc avoir les opérations suivantes: Cet ensemble d'opérations constitue le premier cycle machine ou cycle FETCH, on va procéder maintenant au traitement de la donnée Le mot chargé dans le registre d'instruction va être redistribué vers un décodeur d'adresse interne à l'UCT permettant d'accéder à la MMP (mémoire de micro-programme) ce mot va donc permettre d'activer un micro-programme lequel peut comporter jusqu'à 16 micro-opérations. Ainsi avec un simple code d'un octet on peut déclencher la succession de 16 micro-commandes (au maximum, parfois moins) et bien évidemment réaliser une opération globale très complexe. Notons que la procédure que nous venons de décrire est spécifique d'un fabricant et qu'il y a sans doute, sinon autant de procédures que de fabricants, d'autres procédures plausibles.

chargement d'une donnée

Supposons que l'instruction décodée soit LD (load data) et qu'une donnée résultant d'un calcul antérieur soit rangée à l'adresse A000H. Le code LD qui vient d'être lu était rangé en 0800H, en 0801H on trouvera par exemple 00 c'est à dire la partie de poids faible de l'adresse de la donnée, en 0802H on aura A0.

Ainsi lorsque l'ordre LD s'affiche sur le sélecteur de la MMP les opérations du cycle fetch vont être exécutées, puis On voit qu'au minimum une instruction nécessite un cycle pour son exécution, qu'en lui rajoutant le cycle fetch il faudra au moins 2 cycles pour réaliser une instruction, 4 pour un chargement absolu tel celui décrit ci-dessus, et parfois 7 ou 8 pour certaines instructions complexes. Dans certains µP récents on réduit le nombre de cycles apparents pour traiter une instruction en procédant à plusieurs opérations simultanées en parallèle permettant de démarrer le décodage d'une instruction alors que la précédente n'est pas achevée et en opérant simultanément le chargement de la suivante. Ainsi une instruction semble être exécutée en un seul cycle en moyenne.


les informations traitées par un µP

Un µP ne reconnait que des mots binaires, mais il existe des mots d'adresse de 16 bits dans notre exemple, et des mots adressés qui sont, d'une part, les données (mots codés ici sur 8 bits) et, d'autre part, les mots d'instruction qui peuvent atteindre 32 bits (dans notre exemple).

Notons que si adresse et donnée sont des mots numériques, les instructions qui se présentent aussi sous forme binaire ne sont que des codes indiquant les opérations à effectuer. Par suite une instruction contient généralement plusieurs informations: d'une part, le code de l'opération à effectuer, mais aussi celui du (ou des) opérande(s) concerné(s). Pour que les choses soient claires, une instruction va donc se décomposer en un certain nombre de champs: ex :

Ce qui figure ci-dessus est une suite d'instructions, c'est à dire un programme en langage d'assembleur, en d'autres termes un codage évolué spécifique du µP, à la différence des langages, dits évolués, tels le C ou le Pascal, qui sont indépendants de la machine, mais qui après traduction en code machine occupent généralement beaucoup plus de place qu'un programme assembleur pour réaliser la même fonction. Notons en effet que pour qu'un programme, écrit en langage C, soit compris par le µP, il faut le traduire en une suite d'instructions qui lui sont spécifiques, traduction qui est réalisée par ce qu'on appelle un compilateur. Et il est évident que tous les compilateurs C ne sont pas équivalents, certains ont été optimisés pour donner le code machine le plus compact et c'est au détriment de la vitesse de compilation, tandis que d'autres effectuent une compilation très rapide, mais génèrent alors un code machine moins optimisé qui se traduit par un temps d'exécution du programme plus long.


Hit-Parade