Unité Centrale

Accueil
du Site



Précédent -Suivant

Plan d'étude du fonctionnement d'une UC type

Mon exposé couvrira deux aspects très différents mais incontournablement complémentaires :

  • Aspect matériel :
    Intérese les concepteurs de cartes destinées aux automatismes, informatique embarquée, etc.

    Etude du fonctionnement physique et de l'interconnexion des divers composants de l'environnement matériel d'une UC classique.
    Mécanismes des échanges physiques de données entre l'UC et les divers composants à travers les bus : mémoires, interfaces d'entrée-sortie parallèles ou sériels etc. ainsi que des chronogrammes à respecter.

    Remarquons qu'il existe sur le marché des microcontrôleurs qui intègrent mémoires et interfaces et pour lesquels les précisions d'interconnexion qui vont être données dans les pages qui suivent s'avèreront peut-être inutiles, quoique...
    Quoique même pour mettre en oeuvre ces composants, il est parfois utile de les connaître pour ajouter une extension imprévue par le concepteur du microcontrôleur ou imaginer un type d'interface particulier.


  • Aspect logiciel :
    Comment écrire un programme, l'enregistrer en mémoire , le mettre au point, le dépanner (
    debug ).
    Cet aspect intéresse à la fois les concepteurs de cartes et les programmeurs "purs".
    Les premiers ont besoin de connaître les effets sur le matériel de chacune des instructions du programme, donc de connaître ces instructions et le déroulement pas à pas du programme.
    Ceux qui se destinent exclusivement à la programmation de systèmes automatisés ne peuvent ignorer les effets physiques des instructions.

Prérequis

Pour pouvoir suivre les schémas et les explications concernant les montages matériels,
une connaissance précise de la logique combinatoire est nécessaire.

ETATS LOGIQUES - HAUT - BAS - HAUTE IMPEDANCE (3 Etats)
PORTES LOGIQUES OU, ET,OU EXCLUSIF, etc
BASCULES CLASSIQUES, LECTURE D'UNE TABLE D'ETATS LOGIQUES.
LECTURE D'UN CHRONOGRAMME.

Pour bien comprendre le fonctionnement d'une unité centrale
il est indispensable de connaître en premier celui d'une mémoire électronique.
C'est pourquoi j'ai pris le soin d'expliquer en détail ce point important à la page :
de ce site.
S'y reporter d'abord !

Progression conseillée

Vous trouverez dans ce site des pages d'informations sur le sujets suivants.

Schéma général de l'environnement matériel classique autour d'un processeur :
Fonctionnement d'une mémoire
Divers types de mémoires
Rôle de l'UC (cette même page)
Cycle d'instructions (cette même page)
Unité Arithmétique et logique ALU
Cycles de lecture & écriture en mémoire externe
Cycles d'entrées-sorties ( IN-OUT )

Si vous débutez l'étude de ces systèmes, je vous conseille de les examiner dans l'ordre ci-dessus.

 

Que fait l'Unité Centrale ?
Abréviations possibles pour désigner l'unité centrale : UC ou CPU ( Central Processing Unit )

L' Unité Centrale ou "Processeur" est la partie d'un ordinateur permettant d'effectuer toutes les opérations
sur les données enregistrées en mémoire ou acquises de la part de capteurs externes.

Les premières unités centrales étaient des comprexes électroniques de grande taille situés dans les ordinateurs.
Il en va de même ^pour les très gros ordinateurs actuels..

Pour les ordinateurs de moindr taille, les UC actuelles sont réalisées sous forme d'un seul circuit intégré
On les appelle "Microprocesseurs".
.Exemples : 8085, 8086,8080, jusqu'aux plus complexes : type " Pentium" fabriqués par la marque Intel

Ces processeurs intégrés n'intègrent ni les mémoires ni les interfaces nécessaires à leur fonctionnement.
Car leur vocation est d'être à usage général (general purpose),
c'est à dire d'être intégrés dans des cartes couvrant une large gamme d'usages et de prix.

Pour les applications d'automatique industrielle et d'informatique embarquée,
on a développé des Microcontrôleurs
qui intègrent les mémoires et interfaces d'entrée-sortie,
rendant les réalisations moins chères et plus rapides à développer matériellement.
Exemples : 8051 68HC11 etc.

Les opérations qu'une unité centrale peut exécuter dont de trois ordres (mais nous les verrons plus loin en détail) :

  • Opérations arithmétiques : additions, soustractions, multiplications, divisions, conversions de format, incrémentations ou décrémentations de valeurs binaires, etc.

  • Opérations logiques : différentes combinaisons entre les bits de deux octets ou mots de 16 ou 32 bits utilisées pour réaliser par des opérations de logique combinatoire.

    Plus de précisions sur ces opérations arithmétiques & logiques en :

  • Transferts de données : une unité centrale peut manipuler des données binaires contenues dans des mémoires externes auxquelles elle est physiquement reliée par des "bus"
    (voir page consacrée aux mémoires
    ).
    • Elle peut lire des données :
      • contenues dans des mémoires externes en les copiant dans des registres internes afin d'effectuer les calculs plus rapidement.
      • provenant de capteurs externes ( automatismes ) afin de traiter intérieurement leurs données.
    • Elle peut écrire des données :
      • dans les mémoires externes, par exemple, pour sauvegarder les résultats.
      • dans des actionneurs externes ( automatismes ), pour gérer une machine par exemple en informatique embarquée.
    • Elle peut déplacer intérieurement les valeurs contenues dans ses registres internes.
Les transferts de données UC-Mémoires ou UC-Interfaces sont étudiés plus en détail en :


Schéma de principe d'une UC

Voici un schéma de principe très simplifié d'une unité centrale hypothétique.
Ce schéma sera complété au fur et à mesure que notre étude avancera.


Schéma interne de principe


Schéma externe - brochage;
Le "Bus de Contrôle" regroupe les signaux :
CLK, RST, RD, WR, HLD,HLDA, INT
Ils seront étudiés progressivement.

Sur le schéma
Signification
Bus des données
Ensemble de conducteurs permettant d'échanger des données de n bits
(généralement 8, 16, 32 bits suivant les capacités des UC)
avec les dispositifs externes tels que des mémoires ou des interfaces à des périphériques d'entrée ou de sortie tels que des imprimantes, capteurs ou actionneurs TOR (Tout ou Rien) ou analogiques, etc
Bus des adresses
Ensemble de conducteurs permettant à l'UC de fixer l'adresse qu'elle veut atteindre (pour une lecture ou une écriture) dans une mémoire externe,
ou désignant un dispositif d'interface à un capteur ou actionneur externe..
Bus de contrôle
Ensemble de conducteurs permettant au processeur de contrôler les dispositifs externes tels que des mémoires ou des interfaces à des capteurs ou des actionneurs afin de les valider au bon moment en synchronisme avec l'UC.
Tampons de bus
Registres temporaires permettant de mémoriser les données des bus en entrée ou en sortie tant que l'UC élabore l'information suivante à entrer/sortir.
ALU
Unité Arithmétique et Logique.
Permet d'effectuer les divers calculs arithmétiques ou logiques sur les données.
Sera étudiée à part à la page :
Unité de contrôle
Logique combinatoire, séquentielle & microprogrammée qui gère tout le fonctionnement interne et externe de l'UC.
Reg. état
Registre d'état : composé de bits "indicateurs d'état" décrivant les états particuliers dans lesquels peut se trouver l'UC au cours de son fonctionnement et qu'il est indispensable de connaître.
Entre autre, les résultats spéciaux de certaines opérations : dépassement de registres etc..
PC
Compteur de programme dont il sera question bientôt:
Reg. adressage
Un certain nombre de registres internes permettant d'élaborer de plusieurs manières différentes les adresses à envoyer sur le bus idoine .
Le chapitre consacré aux différents modes d'adressage sera étudié à la page "Transferts de données" en
Vous aurez une idée précise de la manière dont les divers circuits sont reliés à l'aide de bus,
en consultant la page de ce site destinée à donner quelques exemples de schémas réels d'interconnexion.
Elle est en :
Nous allons maintenant examiner tout cela en détail...

Exécution du programme

Bien entendu, l'UC n'a pas l'initiative des opérations qu'elle doit effectuer...
Elle les lit dans un programme constitué d'une suite de codes binaires
enregistrés en mémoire.

Instructions

Chaque opération est codée par une suite de valeurs binaires
(un octet, deux, trois, voire même quatre ou plus suivant le type d'UC).
Le premier octet représente généralement le type d'opération qu'elle doit effectuer (exemple "additionner")
Les octets suivants indiquent sur quels registres elle doit trouver les opérandes
.
Cette suite de valeurs binaires s'appelle une instruction.


Un programme est une suite d'instructions.

Mémoire Programme
Généralement, une UC ne dispose pas d'assez d'octets de mémoire
pour contenir la totalité des instructions d'un programme.
Quoique certains microcontrôleurs si !

Généralement, donc, le programme est contenu dans des mémoires externes
auxquelles l'UC est matériellement reliée par des ensembles de conducteurs appelés BUS.
Le programme consiste donc en une suite d'instructions,
Chaque instruction étant constituée elle même par une suite de codes.

C'est le programmeur (l'humain) qui détermine et écrit préalablement ces codes en séquence dans la mémoire.
L'UC a seulement l'initiative de les lire et de les exécuter dans l'ordre où elles ont été écrites.

Parvenus à ce point, deux questions se posent :

  • Comment se déroule physiquement une recherche d'instruction par l'UC ?
    Quels matériels, quels mécanismes met-elle en jeu ? Parcours des données ? Quels ressources mobilise-t-elle ?
    Comment, instruction après instruction, le programme se déroule-t-il matériellement ?
    Ce sont des questions que se pose le spécialiste du matériel : concepteur de cartes, technicien dépanneur.

  • Comment créer un programe ?
    Quels codes quel langage utiliser ?
    Ce sont les questions que se pose le programmeur, celui qui écrit le logiciel.
    .

On peut envisager d'ignorer totalement l'aspect matériel et ne parler que de logiciel.
Ce n'est pas l'objectif de ce cours destiné à ceux qui visent l'aspect automatismes industriels de l'informatique
et qui doivent comprendre en détail la conjugaison matériel-logiciel.

Les traiter exhastivement l'une après l'autre serait insatisfaisant
car elles sont constamment liées l'une à l'autre à quelque niveau que ce soit.

Je vais donc traiter les deux questions conjointement, en faisant avancer d'abord un peu l'aspect matériel,
puis en présentant l'aspect logiciel associé.
Puis j'avancerai un peu plus sur la connaissance des matériels
et j'ajouterai l'aspect logiciel associé aux nouvelles connaissances acquises en matériel... et ainsi de suite.


Cycle d'instruction

Précisons d'abord la nature d'une instruction

Nous avons déjà dit plus haut que l'unité centrale va "chercher" dans l'espace mémoire externe (ou interne pour certains processeurs) les instructions lui indiquant les opérations qu'elle doit effectuer.

Nous savons maintenant qu'une instruction se présente sous forme d'un certain nombre de codes binaires en mémoire.

Exemple d'instruction

Description fonctionnelle : Additionne le contenu de l'adresse CFA7h en mémoire externe
à celui du registre interne A du processeur.
Code opératoire mnémonique : ADDA
Code opératoire binaire écrit en héxadécimal : C4
Instruction complète : C4 A7 CF
  • Le code mémonique ( "mémonique" signifie "facile à retenir" ) ADDA est un pure invention pour la circonstance.
    Chaque processeur du commerce s'accompagne d'une notice dans laquelle tous ses codes opératoires sont décrits en détail et portent des noms mnémoniques spécifiques. La notice indique également le binaire correspondant.
    Le code mnémonique n'est pas inscrit en mémoire, il ne sert qu'à référencer les instructions sur le papier ou lors de la saisie manuelle du programme de manière humainement compréhensible.

  • C4 rerpésente le binaire correspondant au code opérationnel..
    La mémoire retient ces codes sous forme d'états binaires.
    Pourquoi l'écrit-on en hexadécimal ici ?
    Réponse : vous voyez-vous en train de manipuler des codes en binaire ? C416 = 110001002 ?


  • L'instruction complète est : C4 A7 CF elle comporte 3 octets inscrits séquentiellement en mémoire.
    Le code opératoire est toujours placé en premier.
    L'adresse en mémoire de l'opérande externe
    peut être écrite A7 CF ( LSB d'abord ) dans certains processeurs,
    ou CF A7 (MSB d'abord dans d'autres : voyez la notice !

    Ceci suppose que le processeur travaille avec des adresses sur 16 bits, ce qui est fréquent mais pas universel.

Etapes du cycle d'instruction

Le mot "cycle" indique que le processus de recherche d'instruction par l'UC est cylique et répétitif.
La description qui va suivre vaut donc pour tous types d'instructions.

Compteur de programme

Toute UC possède et met à jour constamment un compteur de programme
C'est un registre interne généralement nommé PC ( Programm Counter ) c.f. fig. ci-dessus.
qui contient à tout instant une adresse : celle du code suivant à lire dans la mémoire programme.
Généralement les UC manipulent des adresses à 16 bits, mais ce n'est pas universel.
Dans les certains schémas de principe je ne leur accorde que 8 bits pour simplifier !
Je suis certain que cela ne vous arrêtera pas...

Pour chaque instruction, l'UC lit en mémoire les codes un par un en séquence
à partir de l'adresse en mémoire contenue dans PC.
Elle incrémente
à chaque fois PC de manière à ce qu'après chaque lecture d'un octet de code,
PC contienne l'adresse du code suivant en mémoire.
En fin de lecture d'instruction, PC contient donc l'adresse du premier code de la prochaine instruction à exécuter.

Lecture séquentielle des codes en mémoire ( fetch cycle )

1 - Point de départ
Une fois terminée l'exécution de l'instruction précédente, l'UC incrémente son PC qui pointe maintenant sur le premier code de l'instruction à effectuer (ADDA = C4 dans l'exemple précédent).

Il faut à ce stade que vous ayez bien compris le fonctionnement d'une mémoire.
Je vous rappelle qu'il est entièrement expliqué à la page de ce site.
A partir de maintenant, je considère que vous l'avez bien retenu.

2 -Phase d'acquisition du premier code

L'UC va lire maintenant ce code C4, ce qui signifie qu'il va le copier dans un registre interne que l'on appelle le registre d'instruction IR. Pour ce faire (suivre sur le schéma ci-dessous) :

  1. L'UC impose l'adresse contenue dans le registre PC, en basse impédance, sur le bus des adresses.
  2. L'UC valide les broches
    /CE1=L & /CE2=L (
    ) de la mémoire avec / WE = H et /OE = H
    Le mémoire est "présélectionnée" mais encore inactive, voir table ci-dessous.
  3. L'UC abaisse le signal de sélection
    / OE = L. La mémoire est active en mode "lecture".
    La mémoire impose sur le bus des adresses la valeur de l'octet ( C4 )
    pointé par l'adresse du PC .
  4. L'UC attend un temps très court pour permettre à la mémoire et aux bus de stabiliser les données.
  5. L'UC copie la valeur ( C4 ) affichée sur le bus des données dans le registre interne IR ( instruction register)
  6. L'UC remet /OE = H dévalidant ainsi la mémoire qui remet en haute impédance ses sorties sur le bus des données.
  7. L'UC dévalide les broches
    /CE1=H
    & /CE2=H de la mémoire,
    ce qui la déconnecte électriquement totalement.
  8. L'UC incrémente PC.

Fin de cycle de recherche de code

3 -Phases suivantes d'acquisition de la totalité de l'instruction

En effet, l'UC n'a lu que le premier octet de l'instruction.
D
'après la valeur ( C4 ) du code opératoire, l'UC "sait" de combien d'octets se compose l'instruction (toutes les instructions n'ont pas 3 octets ) par conséquent, elle recommencera (encore deux fois ici) le cycle de lecture de code.
A la fin du cycle d'instruction, elle aura mis la suite C4 A7 CF dans son registre d'instructions.
Ce sera la fin du cycle de recherche d'instruction ( fetch cycle).

4 - Phase terminale ( execute cycle )

Alors commencera l'exécution de cette instruction.
Je rappelle que la finalité de cette instruction imaginaire mais très plausible était
d'additionner à un registre interne à l'UC nommé "A" le contenu de la mémoire à l'adresse CFA7.
On imagine que l'unité centrale sera amenée maintenant à lire le contenu pointé par l'adresse en mémoire CFA7.
Ce qui n'est pas très différent de ce que nous venons de voir....
Puis d'exécuter l'addition en interne entre le registre A et le contenu lu dans la mémoire..
Ces deux phases sortent du propos que je m'étais fixé dans cette page.
Mais vous ne perdez rien pour attendre....

Chronogramme de lecture en mémoire



La sélection est un signal permettant de valider le circuit constituant la mémoire visée.

Comme nous le verrons, il est très utile lorsque l'UC doit gérer plusieurs boîtiers de mémoire sur la même carte.
Il est généralement le résultat d'une combinaison logique de signaux contrôlés par l'UC.
Ce signal "prépare" en quelque sorte telle mémoire à émettre ou recevoir des données à travers le bus.

L'échantillonnage est un signal provenant le plus souvent directement de l'UC.
Une fois préparée à fonctionner, la mémoire est invitée à le faire à un moment très précis.

J'ai souvent comparé sélection et échantillonnage à l'art du commandement militaire ou sportif :
ordre préparatoire - ordre d'exécution.
1° à vos marques, prêts ! - 2° partez !

Schéma type de connexion physique UC - Mémoire


Ce schéma, encore très incomplet, montre uniquement les connexions UC - Mémoire.
Seules les lignes A0...A12 du bus des adresses sont utilisées.

CE2 est constamment validée par sa mise au niveau haut (Vcc).
Pour que la mémoire soit validée il faut à la fois /CE1=0 et CE2=1.
/CE1 n'est validée que lorsque le signal IO/Mem/ est à l'état bas, indiquant, pour ce processeur,
une opération d'accès à la mémoire.
/CE1est dans ce cas le signal de sélection vu dans le chronogramme ci-dessus.
/RD et /WR sont les signaux d'échantillonnage.
/OE n'est validée qu'au moment de la lecture par l'UC (/ RD = 0)..

On remarquera que la mémoire est du type RAM, volatile.
Si cette mémoire contient le programme, il sera perdu dès que l'on coupera le courant.
Ce qui invalide fonctionnellement le schéma précédent.
Cela nous amène à envisager de monter deux mémoires.
L'une volatile pour les données variables;
L'autre non volatile (type ROM, EPROM, EEPOM, FLASH) pour contenir le programme.
C'est ce qui va nous amener à étudier le principe du décodage sélectif d'adresses..


Décodage sélectif d'adresses

Dans le schéma ci-dessous, deux mémoires coexistent.
Une EPROM (mémoire non volatile effaçable aux UV et reprogrammable)
Elle est destinée à contenir le programme.
Par ailleurs, le processeur ne peut pas écrire des données dans une EPROM.
Un système d'écriture à part est nécessaire pour y enregistrer le programme.
Une RAM (mémoire volatile) est donc indispensable pour contenir des données passagères
qui, elles, ne survivront pas à la coupure de l'alimentation. .

Je traite ce sujet sur une autre page de ce site :


Multiplexage Données - Adresses

Le nombre de broches hadicape la fabrication des boîtiers et des cartes mères.
C'est pourquoi l'on a pensé à attribuer pysiquement plusieurs fonctions à une seule broche.
C'est le cas, dans le microprocesseur 8088, et dans bien d'autres,
des huit broches nommées AD0, AD1, ... AD7.(Adress Data).
Sur la broche ADx ( x de 0 à 7) sont présentes tantôt la donnée Dx, tantôt l'adresse Ax.

Une broche nommée ALE du processeur indique, un très court instant,
en début de chaque cycle d'accès aux mémoires soit en lecture soit en écriture,
que les Adresses A0...A7 sont présentes sur les broches AD0...AD7.

Passé ce court instant, AD0...AD7 véhiculent les données D0...D7...

Le terme "multiplexage" signifie d'une manière générale
toute technique visant à véhiculer sur une même voie des signaux différents et indépendants.
C'est bien le cas ici pour les signaux d'adresses et des données 0 à 7.

Dans le schéma ci-dessous vous trouverez une réalisation de multiplexage adresses-données
grâce au circuit 373 que l'on appelle, fonctionnellement, un verrou (
Latch)
J'étudie en détail ce montage autour du 373, sur une autre page de mon site, en :
Je rappelle que le décodage sélectif d'adresses mettant en jeu le décodeur 138 est étudié en

Rubriques connexes

Précédent -Suivant
Sommaire
Mémoires
Types de mémoires
Mémoires magnétiques
Unité centrale
ALU
Sélection d'adresses
Multiplexage
Contrôle de flux
Transferts de données
Architectures matérielles
Sommaire

du Site

Titre
 
Titre
 
Titre