Spaceuit


Informatique Appliquée

Fillière Intelligence Artificielle

Automne 2024

Ali El Hourch
[email protected]


Guide
Nouveau
Assistant AI
Visual Studio Code Google Classroom Whatsapp Whatsapp Discord Discord
Module 1: Probabilités Et Statistiques Module 2: Architecture Des Ordinateurs Module 3: Structure De Données En C Module 4: Système d'exploitation 1 Module 5: Programmation Web 1 Module 6: Langues Etrangéres Module 7: Compétences Culturelles & Artistiques

Semestres

Automne 2024

Tronc Communs

Informatique Appliquée

Microprocesseurs


Introduction


  • Un microprocesseur est un circuit électronique destiné à traiter des valeurs numériques.
  • Le fonctionnement du microprocesseur est basé sur l'architecture de Von Neumann, soit un bus d'adresses, un bus de données et un bus de contrôle.
  • Architecture interne d'un miroprocesseur


    • ACC : Accumulateur
    • RTUAL : Registre Temporaire de U.A.L
    • RTA : Registre Temporaire d'Adresse
    • RI : Registre d'Instruction
    • IP : Instruction Pointer (Pointeur d'Instruction)
    • La figure représente l'architecture interne simplifiée d'un microprocesseur, elle comporte:
      • Les registres
      • Unité de commande
      • Unité de traitement (U.A.L)
      • Le décodeur d'instructions: Qui à partir du code de l'instruction lu en mémoire actionne la partie de l'unité de commande nécessaire.
    • Les informations circulent à l'intérieur du processeur sur deux bus internes, l'un pour les données, l'autre pour les instructions.
    • Le microprocesseur est relié à l'extérieur par les bus de données et d'adresses, le signal d'horloge et les signaux de commandes.
    • Information

    • Un programme est une suite d'instructions et un ensemble de données stockés dans des cases mémoire:
      • Chaque case mémoire est repéré par une adresse.
      • L'exécution d'un programme par le microprocesseur consiste donc à:
        • Lire les instructions dans la mémoire et les strocker dans le microprocesseur.
        • Decoder et exécuter ces instructions. Selon la nature de l'instruction. Le microprosseur peut effectuer une lecture de données à traiter. Une ecriture de données en mémoire.
        • Pour effectuer ces opérations, le microprocesseur fair appel à des blocs fondamentaux :
          • Bloc des registres.
          • Bloc de calcule UAL.
          • Bloc logique de commande.
    • Le Registre RTUAL peut être multiple (R0, R1, ...)

    Les registres


    • Un registre est un ensemble de bits qui permet de stocker une information binaire dans un microprocesseur.
    • Le microprocesseur utilise toujours les registres.
    • L'information peut être une instruction, une donnée ou une adresse.
    • Ce sont des petites mémoires internes d'accès très rapides.
    • Elles sont utilisées pour stocker temporairement une donnée, une instruction ou une adresse.
    • Chaque registre stocke 8, 16, 32 bits.
    • Il existe 6 registres fondamentaux qu'on trouve dans tous les microprocesseurs :
      • Compteur d'instruction ou compteur ordinal.
      • Registre d'adresse.
      • Registre d'instruction.
      • Registre de données (Accumulateur)
      • Registre d'état.
      • Registre temporaire.

    Registre de données (Accumulateur)


    • L'accumulateur est parmis le plus important registre.
    • L'accumulateur est utilisé pour stocker les résultats des opérations arithmétiques et logiques.
    • L'accumulateur est un registre qui est relié :
      • D'un côté à un registre temporaire (RTA: Registre temporaire d'adresse) et un bus interne de données.
      • De l'autre côté à la sortie de l'unité arithmétique et logique (UAL).
    • Si une operation traite deux données, alors :
      • Une donnée sera stockée d'abord dans l'accumulateur.
      • La deuxiéme donnée passera directement au RTUAL.
      • Le résultat de l'opération est stocké dans l'accumulateur en sortant de l'UAL.

      Exemple

    • Prenons un exemple où nous voulons additionner deux nombres.
      • Le premier nombre est chargé dans ACC, ensuite elle passera au premier registre temporaire R0.
      • Le second nombre est chargé dans le deuxiéme registre temporaire (R1 ou RTUAL).
      • Les deux opérandes sont transférés à l'UAL via le bus de données interne.
      • L'UAL additionne la valeur dans ACC et la valeur dans RTUAL.
      • Le résultat de l'addition est stocké dans ACC pour être utilisé ultérieurement.

      Illustration Schématique du Processus

      [Premier Nombre] → [Accumulateur] → [Registre R0]
      [Second Nombre] → [Registre R1]
      R0 et R1 → [Bus de Données] → [UAL]
      UAL (A + B) → [Accumulateur]
                          

      Exemple en Langage d'Assemblage Simplifié

      MOV ACC, #5      ; Charger le premier nombre (5) dans l'accumulateur
      MOV R0, ACC      ; Transférer le contenu de l'accumulateur vers R0
      MOV R1, #10      ; Charger le second nombre (10) directement dans R1
      ADD ACC, R0, R1  ; Additionner R0 et R1, stocker le résultat dans l'accumulateur
                          
    • Un accumulateur représente également une intermédiare entre la mémoire et les interfaces d'E/S.
    • Exemple

      • Lecture d'une donnée :
        1. Une donnée est lue d'un périphérique d'entrée et stockée dans l'accumulateur.
        2. Cette donnée est ensuite transférée en mémoire.
      • Ecriture d'une donnée :
        1. Un calcul est effectué par l'UAL, et le résultat est stocké dans l'accumulateur.
        2. Ce résultat est ensuitt transféré vers un périphérique de sortie, comme un affichage.
    • Le nombre de bits de l'ACC est égal en général au nombre de broches du bus de données.
    • Le nombre d'accumulateur varie d'un microprocesseur à l'autre.
    • Exemple : première génération : 8088, 8085 et 6800 ce sont des microprocesseur de 8 bit ils possèdent 1 accumulateur de 8 bits.
    • 6809 et 8088 sont appelés des microprocesseurs faux 16 bits :
      • Ce sont des microprocesseurs de 8 bits.
      • Ils possèdent deux accumulateur de 8 bits qui peuvent être regroupés pour former un seul accumulateur de 16 bits.
    • Le 8086, 80286, 68000 sont de vrais 16 bits : Ce sont des microprocesseurs de 16 bits avec 1 accumulateur de 16 bits.
    • Les microprocesseurs vrais 16 bits sont plus rapides que les microprocesseurs faux 16 bits.
    • L'accumulateur intervient dans une proportion importante des instructions.
    • Exemple

    • Exécution d'une instruction comme ``Ajouter 5 au contenu de la case mémoire d'adresse 180'':
      1. Le processeur lit et décode l'instruction
      2. Le processeur demande à la mémoire le contenu de l'emplacement 180
      3. La valeur lue est rangée dans l'accumulateur
      4. L'unité de traitement U.A.L ajoute 5 au contenu de l'accumulateur
      5. Le contenu de l'accumulateur est écris en mémoire à l'adresse 180.

      Exemple en Langage d'Assemblage Simplifié

      LOAD ACC, 180      ; Charger le contenu de la mémoire à l'adresse 180 dans l'accumulateur
      ADD ACC, #5        ; Ajouter la valeur immédiate 5 au contenu de l'accumulateur
      STORE 180, ACC     ; Stocker le résultat de l'accumulateur à l'adresse 180
                          
    • C'est l'unité de commande qui déclende chacune de ces actions dans l'ordre.
    • L'addition proprement dite est effectuée par l'U.A.L

    Compteur Ordinal (CO)


    • Format d'une instruction :
         Code_Opération  Code_Opérande
      • Le code opération spécifie la nature de l'opération à effectuer.
        • Cette opération peut être une +, -, *, un transfer de données, ...
        • Le code opération est codé sur une cellule mémoire.
      • Le code opérande indique au microprocesseur les données qui vont être traitées par le code opération.
        • La taille du code opérande dépend de la nature des données mises en jeu.
        • Un certain nombre de cellules mémoire est nécessaire pour stocker le code opérande.
      • La structure d'un programme stocké en mémoire a la forme suivant :
    • Le compteur ordinal est un registre qui permet de localiser les instructions stockées en mémoire.
    • Le CO est chargé au début de l'exécution d'un programme à partir de l'adresse de la première case mémoire où se trouve le premier code opération de la première instruction.
    • L'exécution d'un programme s'effectue d'une façon séquentielle.
    • Le compteur ordinal s'incrémente automatiquement pour passer de l'adresse d'une case mémoire à l'adresse suivante.
    • Le nombre de bits de ce registre est égale au nombre de broches du registre d'adresse.
    • Le compteur ordinal est représenté par le bloc IP dans le première schéma.
    • Ce registre est directement relié au compteur ordinal, il représente une interface entre ce compteur et le bus d'adresse du microprocesseur.

    Registre d'adresse (RA)


    • Ce registre est directement relié au compteur ordinal (IP), il représente une interface entre ce compteur et le bus d'adresse du microprocesseur.
    • Le RA permet d'accéder à une donnée en mémoire.
    • Le nombre de bits de ce registre est égal au nombre de broches de bus d'adresses.

    Registre d'instruction (RI)


    • Le RI permet de stocker l'instruction à exécuter.
    • Ce registre va garder cette instruction pendant le temps nécessaires à son décodage et son exécution.
    • Le compteur ordinal communique avec le RA pour lui donner l'adresse de la première instruction.
    • Le RA donne cette adresse au bus d'adresse qui va localiser cette adresse.
    • La mémoire reçoit un signal (la ligne R/W = 1) de la part de la logique de contrôle pour l'informer qu'il s'agit d'une lecture.
    • Le bus de données va lire l'instruction et la mettre dans le registre d'instruction.

    Registre Temporaires (RT)


    • L'U.A.L possède deux entrées pour recevoir les données à traiter.
    • Au niveau de chaque entrée il y a un registre temporaire qui garde la donnée pendant le temps nécessaire à son traitement.
    • L'U.A.L est un circuit électronique qui ne peut pas stocker des données, elle se sert donc des registres temporaires RT1 et RT2.

    Registre d'Etat (RE)


    • Le registre d'Etat est directement lié à l'U.A.L
    • Le registre d'Etat stocke certaines informations particulières concernant les opérations effectuées.
    • Le nombre de bits de ce registre varie d'un microprocesseur à l'autre.
    • Les bits les plus utilisés sont :
    • Bit de retenue ou indicateur de retenu (CF)
      • Si CF = 1 alors une opération d'addition ou soustraction a généré une retenue.
      • Si CF = 0 alors pas de retenue
      • Exemples

        10101111 (175)
        00001010 (10)
        --------
        10101001 (185)
        CF=0 pas de retenue
        
        
        11111111 (255)
        00000001  (1)
        --------
        00000000 
        CF = 1, il y a une retenue, ce 1 de retenue sera stocker dans le bit de retenue CF.
                                
    • Bit de zéro ZF
      • Si ZF = 1 alors le résultat d'une opération est nul.
      • Si ZF = 0 alors le résultat d'une opération est non nul.
      • Exemple

        +15        0 1111 (+15)
        -15        1 0001 (-15)
        ---        ------
        0        1 0 0000 (Retenue ignorée)
        ZF = 1
        
        +15        0 1111 (+15)
        -1         1 1111 (-1)
        ---        ------
        0        1 0 1110 (Retenue ignorée)
        ZF = 0
                                    
    • Bit de signe SF
      • Si SF = 1 alors le bit le plus significatif d'une donnée est égale à 1 (Indique qu'il s'agit d'un nombre négatif)
      • Si SF = 0 alors le bit le plus significatif d'une donnée est égale à 0 (Indique qu'il s'agit d'un nombre positif)
      • Exemple

        +1 = 0 00000012 SF = 0.
        -1 = 1 11111112 en complément à 2 implique SF = 1.
                                
    • Bit de débordement OF
      • Si OF = 1 alors il y a dépassement de la capacité maximale de codage.
      • Si OF = 0 alors il n'y a dépassement de la capacité maximale de codage.

    Bloc de calcul (Unité de traitement U.A.L)


    • Les traitments effectués par l'unité arithmétique et logique sont:
      • Opérations arithmétiques :
        • Addition
        • Soustraction
        • Multiplication
        • Division
      • Opérations logiques :
        • Et logique (AND)
        • Ou logique (OU)
        • Ou exclusif (XOR)

        Exemples

        1. Et logique (AND)
          • Soient N1 = 00101111 et N2 = 10100001
          • N1 AND N2 = 00100001
          • A   B   A AND B 
            0   0      0
            1   0      0
            0   1      0
            1   1      1
                                            
        2. Ou logique (OU)
          • Table logique de OR:
          •     A   B   A OR B 
                0   0     0
                1   0     1
                0   1     1
                1   1     1
                                            
        3. Ou exclusif (EOU/XOR)
          • Table logique de XOR:
          •     A   B   A XOR B 
                0   0      0
                1   0      1
                0   1      1
                1   1      0
                                            

    Bloc logique de commande (Unité de commande et contrôle)


    • L'unité de commande a pour fonction :
      • Décodage des instructions stockées dans le registre d'instruction.
      • Exécution des instructions par les organes exécutifs (UAL, Accumulateur, CO, ...)
      • Gestion du dialogue entre le microprocesseur, les mémoires et les interfaces d'E/S, par l'intermédiare du bus de commande et des signaux de contrôle.
    • Les signaux de commandes permettent au processeur de communiquer avec les autres circuits de l'ordinateur.
    • On trouve en particulier :
      1. Le signal R/W (Read/Write) : le microprocesseur indique à la mémoire principale s'il effectue un accès en lecture ou en écriture.
      2. L'initialisation des registres internes du microprocesseur : la broche d'initialisation fait signal au microprocesseur de faire tous les registres à zéro.
      3. L'interruption d'exécution du microprocesseur.
    • Le nombre de broches de ces signaux change d'un constructeur à un autre.
    • Exemple de gestion interne

      • Incrémentation du CO.
      • Mise à jour des bits du registre d'état en fonction des résultats fournis par l'UAL.
      • Nature de l'opération qui va être effectuée par l'UAL.

      Exemple de gestion externe (Dialogue)

      • INT : Interruption d'exécution d'un programme.
        INT est générée par une interface d'E/S
        Si INT = 1 alors l'IE/S désire communiquer avec le microprocesseur.
        Si INT = 0 pas de dialogque entre E/S et microprocesseur.
      • INTA : Réponse par le microprocesseur au signale INT
        Si INTA = 1 alors le microprocesseur a reçu le signal INT
        Si INTA = 0 alors le microprocesseur n'a pas reçu le signal INT.
      • DMA : Direct Memory Access
        Si DMA = 1 alors une interface d'E/S demande les bus de données, d'adresses et de commandes pour être en lien avec la mémoire.
        Si DMA = 0 alors pas de demanve des bus de la part les interfaces d'E/S.
      • DMAA : Réponse du microprocesseur au signal DMA
        Si DMAA = 1 alors le microprocesseur a reçu le signal DMA.
        Si DMAA = 0 alors le microprocesseur n'a pas reçu le signal DMA

      Exemple d'utilisation

      • Chargement des programmes, fichiers de données, ..., de l'unité disque dur ou disquette dans la mémoire vive (RAM).
      • Stockage des programme, ... de la RAM vers le disque dur ou disquette.

      Exemple de INT et INTA

      • Si INT = 0, INTA = 0
        Le microprocesseur exécute le programme principal (fonctionnement normal)
        Si INT = 1 alors une interface d'E/S désire communiquer avec le microprocesseur pour un transfer de données:
        1. Le microprocesseur va donc interrompre le programme principal.
        2. INTA = 1, le microprocesseur informe l'interface d'E/S qu'il a reçu le signal INT.
        3. Le microprocesseur exécute un sous programme pour le traitement de l'interruption (lecture des données de l'interface d'E/S vers le microprocesseur et du microprocesseur vers la mémoire).
        4. A la fin de l'exécution du sous programme, le microprocesseur continue à exécuter le programme principal à partir de l'instruction suivante.

    Horloge


    • C'est un oscillateur qui génère un signal périodique.
    • à l'instant T le microprocesseur doit chercher l'instruction après une période il doit l'exécuter et ainsi de suite.
    • D'où la notion de temps pour microprocesseur.

    Fonctionnement d'un microprocesseur


  • L'exécution d'un programme se fait séquentiellement à partir du premier mot de la première instruction.
  • Pour chaque mot d'une instruction le microprocesseur effectue les phases suivantes :
    • Phase de recherche
    • Phase de décodage et recherche d'opérande
    • Phase d'exécution

    Phase de recherche

    • Le but de cette phase est de chercher le contenu d'un mot d'une instruction de la mémoire vers le registre d'instruction.
    • Elle s'effectue de la manière suivante :
      1. Le compteur ordinal qui contient l'adresse du premier mot de l'instruction est envoyé au registre d'adresse.
      2. Un signal de lecture est envoyé par le l'unité de commande et de contrôle vers la mémoire.
      3. La mémoire une fois qu'elle reçoit l'adresse et le signal de lecture :
        • Effectue le décodage de l'adresse considérée (càd cherche la case mémoire dont l'adresse est dans le bus d'adresse).
        • Dépose sur le bus de données le contenu de la case mémoire spécifiée.
      4. Le microprocesseur lit le bus de données et dépose le contenu dans le registre d'instruction.
      5. Le contenu du compteur ordinal est incrémenté automatiquement par le bloc de contrôle et de commande.
        Les étapes de 1 à 5 vont se répéter jusqu'à la fin de la recherche de tous les mots de l'instruction.

    Phase de décodage et recherche d'opérande

    • La registre d'instruction contietn le premier mot de l'instruction.
    • Ce mot contient le code opération qui définit la nature de l'opération à éffectuer et le nombre de mots de l'instruction. Ainsi:
      1. L'unité de commande transforme l'instruction en une suite de commandes élémentaires nécessaires au traitement de l'instruction.
      2. Si l'instruction nécessite une donnée en provenance de la mémoire, l'unité de commande récupère sa valeur sur le bus de données.
      3. L'opérande est stocké dans un registre.

    Phase d'exécution

    1. Le micro-programme réalisant l'instruction est exécuté.
    2. Les flags sont positionnés (registre d'état)
    3. L'unité de commande positionne le CO pour l'instruction suivante.
  • La synchronisation entre la phase de recherche, la phase de décodage et d'exécution se fait grâce à une base de temps fournis par u n oscillateur.
  • Le nombre de périodes par phase dépend du microprocesseur utilisé.
  • Le nombre de phases de recherche dépend de l'instruction à exécuter.
  • Le nombre dephases de décodage est 1.
  • Exemple

  • LOAD ACC $2000
  • Càd charger dans l'accumulateur le contenu de la case mémoire: $2000
  • Phase de recherche: 3 périodes
  • Phase d'exécution: 2 périodes
  • Un cycle machine: 5 périodes