Registres MIPS et Gestion des IRQ
45 Questions
1 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Que se passe-t-il lorsque le bit HWI0 du registre c0_status est à 0?

  • Le programme en cours d'exécution est immédiatement interrompu.
  • Le registre c0_status est mis à jour automatiquement.
  • La sortie du AND est 1 et l'IRQ est active.
  • La sortie du AND est 0 et l'IRQ est masquée. (correct)
  • Quel est le rôle du bit IE dans le registre c0_status?

  • Il masque globalement les IRQ. (correct)
  • Il modifie la valeur du registre IPC.
  • Il permet de désactiver la gestion des exceptions.
  • Il déclenche le vecteur d'interruption.
  • Que doivent faire les registres ICU_SET et ICU_CLEAR pour interagir avec le registre ICU_MASK?

  • ICU_SET met à 0 les bits et ICU_CLEAR met à 1.
  • ICU_SET met à 1 les bits et ICU_CLEAR met à 0. (correct)
  • ICU_SET et ICU_CLEAR n'interagissent pas avec ICU_MASK.
  • ICU_SET permet de lire les bits, ICU_CLEAR permet de les modifier.
  • Quel est le rôle des tableaux IRQ_VECTOR_ISR[] et IRQ_VECTOR_DEV[]?

    <p>Ils déterminent quel ISR exécuter pour chaque numéro d'IRQ. (C)</p> Signup and view all the answers

    Quel est l'effet de l'activation d'un signal IRQ sur le MIPS?

    <p>Le programme en cours est dérouté vers kentry à l'adresse 0x80000180. (B)</p> Signup and view all the answers

    Que fait le bit EXL dans le registre c0_status lorsqu'il est mis à 1?

    <p>Il bascule le traitement des exceptions. (A)</p> Signup and view all the answers

    Combien d'entrées possibles d'IRQ le contrôleur de l'ICU peut-il gérer?

    <p>32 (C)</p> Signup and view all the answers

    Pour modifier le registre ICU_MASK, quels registres doivent être utilisés?

    <p>ICU_SET et ICU_CLEAR. (A)</p> Signup and view all the answers

    Quelle est la valeur binaire nécessaire dans le registre ICU_MASK pour recevoir uniquement les IRQ des 4 TTYs ?

    <p>0b00000000.00000000.00111100.00000000 (A)</p> Signup and view all the answers

    Que faut-il écrire dans le registre ICU_SET pour mettre à 1 le bit 10 ?

    <p>1 dans le registre ICU_SET (D)</p> Signup and view all the answers

    Quels bits faut-il écrire à 1 dans le registre ICU_SET pour démasquer seulement TTY1 et le TIMER ?

    <p>Bits 2 et 14 (D)</p> Signup and view all the answers

    Quelle valeur hexadécimale correspond à une écriture de 1 dans les bits 2 et 14 dans le registre ICU_SET ?

    <p>0x00004004 (C)</p> Signup and view all the answers

    Comment s'assurer que le bit 5 de ICU_MASK soit à 0 ?

    <p>Écrire 1 dans le registre ICU_CLEAR (D)</p> Signup and view all the answers

    Quel est le rôle des registres mappés dans l'espace d'adressage du MIPS?

    <p>Gérer les signaux d'interruption. (A)</p> Signup and view all the answers

    À partir de quelle adresse les registres du TIMER sont-ils mappés?

    <p>0xd3200000 (C)</p> Signup and view all the answers

    Que signifie le terme IRQ?

    <p>Interrupt Request. (D)</p> Signup and view all the answers

    Quelle est la conséquence d'une IRQ levée par un contrôleur de périphérique?

    <p>Le programme est suspendu et dirige vers le noyau. (D)</p> Signup and view all the answers

    Les adresses de contrôleurs de périphériques peuvent-elles être changées par le logiciel?

    <p>Non, elles sont fixées par le matériel. (A)</p> Signup and view all the answers

    Quelle est la fonction des ISR (Interrupt Service Routines)?

    <p>Traiter les interruptions levées par les IRQ. (C)</p> Signup and view all the answers

    Quel est le mode nécessaire pour utiliser les adresses des contrôleurs de périphériques sur MIPS?

    <p>Mode kernel. (D)</p> Signup and view all the answers

    Quelles sont les deux conditions d'état des IRQ?

    <p>Actif / Inactif. (B)</p> Signup and view all the answers

    Quelle est la signification de l'acronyme I.R.Q. ?

    <p>Interruption Request (A), Requête d'Interruption (B)</p> Signup and view all the answers

    Quels états peut avoir un signal IRQ ?

    <p>Deux états : ON et OFF (D)</p> Signup and view all the answers

    Quel événement peut provoquer une IRQ ?

    <p>L'arrivée d'une donnée sur le contrôleur de périphérique (D)</p> Signup and view all the answers

    Quels sont les composants sources des IRQ ?

    <p>Les contrôleurs de périphériques (C)</p> Signup and view all the answers

    Que signifie masquer une IRQ ?

    <p>Bloquer le signal entre la source et la destination (A)</p> Signup and view all the answers

    Quels composants sont capables de masquer une IRQ ?

    <p>Le composant ICU et le MIPS (B)</p> Signup and view all the answers

    Qu'est-ce qu'une I.S.R. ?

    <p>Une routine de traitement d'interruption (A)</p> Signup and view all the answers

    Quels éléments sont connectés aux entrées de l'ICU pour les IRQ dans la plateforme des TPs ?

    <p>Les TTYs et le TIMER (D)</p> Signup and view all the answers

    Quelle est la fonction principale d'une ISR ?

    <p>Accéder aux registres du contrôleur de périphérique et acquitter l'IRQ. (D)</p> Signup and view all the answers

    Quel composant dans une plateforme de TP peut lever des IRQ ?

    <p>Seuls les composants TTY et TIMER peuvent le faire. (B)</p> Signup and view all the answers

    Que se passe-t-il lorsque l'IRQ est masquée ?

    <p>Le processeur ne réagit pas à l'IRQ. (D)</p> Signup and view all the answers

    Quel registre contient le numéro de l'IRQ active la plus prioritaire ?

    <p>ICU_HIGHEST. (D)</p> Signup and view all the answers

    Comment l'IRQ du TTY0 est-elle reliée au système ?

    <p>Elle est reliée à l'entrée n° 10 de l'ICU. (B)</p> Signup and view all the answers

    Quel registre doit être accédé pour acquitter l'IRQ du TTY ?

    <p>TTY_READ. (A)</p> Signup and view all the answers

    Quel effet a l'AND entre le bit 10 du registre ICU_STATE et le bit 10 du registre ICU_MASK ?

    <p>Il masque l'IRQ si le bit est à 0. (C)</p> Signup and view all the answers

    D'où provient le signal IRQ envoyé au processeur ?

    <p>Des composants TTY et TIMER combinés par l'ICU. (D)</p> Signup and view all the answers

    Quel est le rôle de la case n° i du tableau IRQ_VECTOR_ISR[] ?

    <p>Contenir le pointeur sur la fonction ISR à appeler (D)</p> Signup and view all the answers

    Quel type d'informations est stocké dans la case n° i du tableau IRQ_VECTOR_DEV[] ?

    <p>Le numéro de l'instance du périphérique (A)</p> Signup and view all the answers

    Quels sont les trois registres du coprocesseur 0 impliqués lors de l'entrée dans le noyau ?

    <p>syscall, interruption, exception (C)</p> Signup and view all the answers

    Quel bit du registre c0_status détermine si les interruptions sont masquées ou autorisées ?

    <p>IE (A)</p> Signup and view all the answers

    Que signifie un bit EXL à 1 dans le MIPS ?

    <p>Mode kernel avec interruptions masquées (B)</p> Signup and view all the answers

    Quel est le rôle des instructions mtc0 et mfc0 ?

    <p>Lire et écrire les registres du coprocesseur 0 (C)</p> Signup and view all the answers

    Comment sont adressées les ISR des TTY dans le tableau IRQ_VECTOR_ISR[] ?

    <p>Dans les cases 10, 11, 12 et 13 (C)</p> Signup and view all the answers

    Quel bit indique le mode d'exécution actuel du MIPS ?

    <p>UM (B)</p> Signup and view all the answers

    Flashcards

    IRQ

    Les IRQ (Interrupt ReQuest) sont des signaux électriques qui indiquent un événement particulier, comme la réception d'une donnée ou la fin d'un processus. Ces signaux sont émis par les contrôleurs de périphériques pour prévenir le processeur de l'évènement.

    ISR

    L'ISR (Interrupt Service Routine) est un programme spécial qui est exécuté par le noyau en réponse à une interruption (IRQ). L'ISR traite l'événement qui a provoqué l'interruption et effectue les actions nécessaires pour répondre à l'événement.

    Routage des IRQ

    Le routage des interruptions permet de déterminer quelle ISR est exécutée en réponse à une interruption. Chaque IRQ est associée à une ISR spécifique.

    Masquage des IRQ

    Le masquage des interruptions permet d'empêcher le processeur de recevoir des interruptions spécifiques. Cela peut être utilisé pour éviter les interruptions indésirables ou pour gérer des situations critiques.

    Signup and view all the flashcards

    ICU

    L'ICU (Interrupt Controller Unit) est un composant qui gère les interruptions provenant des périphériques. L'ICU reçoit les IRQ des périphériques et les transmet au processeur.

    Signup and view all the flashcards

    TIMER

    Le TIMER est un périphérique qui génère des interruptions périodiquement. Le TIMER est utilisé pour mesurer le temps et pour planifier des tâches.

    Signup and view all the flashcards

    TTY

    Le TTY est un terminal de texte utilisé pour interagir avec le système d'exploitation. Le TTY est un périphérique qui reçoit les entrées de l'utilisateur et affiche les sorties du système.

    Signup and view all the flashcards

    Registres

    Les registres sont des emplacements de mémoire qui stockent des informations spécifiques. Le Contrôleur de périphérique utilise des registres pour communiquer avec le processeur.

    Signup and view all the flashcards

    Routine d'interruption

    La routine appelée lors d'une interruption.

    Signup and view all the flashcards

    ICU (Interrupt Controller Unit)

    Le composant qui combine les IRQ de différents périphériques en un seul signal envoyé au processeur.

    Signup and view all the flashcards

    ICU_STATE

    Registre contenant les bits d'état des IRQ, indiquant lesquelles sont actives.

    Signup and view all the flashcards

    ICU_MASK

    Registre contenant les bits de masquage des IRQ, déterminant lesquelles sont ignorées.

    Signup and view all the flashcards

    ICU_HIGHEST

    Registre contenant le numéro de l'IRQ active la plus prioritaire.

    Signup and view all the flashcards

    Masquage des IRQ par HWI0

    Le bit HWI0 dans le registre c0_status est utilisé pour contrôler le masquage des interruptions (IRQ). Si HWI0 est à 0, l'IRQ est masquée et la sortie du AND est 0.

    Signup and view all the flashcards

    Configuration du registre ICU_MASK

    Le registre ICU_MASK est utilisé pour configurer l'activation ou la désactivation des interruptions provenant des contrôleurs de périphériques. Cependant, il n'est pas directement modifiable. Des registres séparés, ICU_SET et ICU_CLEAR, sont utilisés pour modifier le contenu de ICU_MASK.

    Signup and view all the flashcards

    Vecteur d'interruption (IRQ_VECTOR_ISR[], IRQ_VECTOR_DEV[])

    Le vecteur d'interruption est utilisé pour associer chaque numéro d'IRQ à une ISR (Interrupt Service Routine) et son périphérique associé. Il est constitué de deux tableaux, IRQ_VECTOR_ISR[] et IRQ_VECTOR_DEV[], chacun avec 32 cases correspondant aux différentes IRQ.

    Signup and view all the flashcards

    Signal IRQ

    Le signal IRQ est activé quand l'ICU détecte une interruption provenant d'un contrôleur de périphérique. C'est le signe qu'une interruption doit être traitée.

    Signup and view all the flashcards

    Traitement de l'IRQ par le MIPS

    Lorsque l'IRQ est activée, le MIPS interromp son programme en cours et saute à l'adresse 0x80000180, correspondant à l'ISR 'kentry'. Simultanément, l'adresse de retour (PC+4) est enregistrée dans C0_EPC et l'état du processeur (c0_status) est mis à jour pour indiquer que l'exception est en cours de traitement.

    Signup and view all the flashcards

    Activation/désactivation des IRQ (bit IE dans c0_status)

    L'état de l'IRQ est contrôlé par le bit IE (Interrupt Enable) de c0_status. Le bit IE est un bit de contrôle global qui active ou désactive la réception des IRQ par le processeur.

    Signup and view all the flashcards

    Niveau d'exception (bit EXL dans c0_status)

    Le bit EXL (Exception Level) de c0_status est utilisé pour contrôler le niveau d'exception. Lorsque EXL=1, les interruptions sont masquées.

    Signup and view all the flashcards

    Espace d'adressage inaccessible en mode utilisateur

    Les registres de l'unité de commande des interruptions (ICU) sont mappés dans une partie de l'espace d'adressage inaccessible en mode utilisateur.

    Signup and view all the flashcards

    Qu'est-ce que IRQ ?

    L'acronyme IRQ signifie Interrupt Request, ou requête d'interruption en français.

    Signup and view all the flashcards

    Combien d'états pour une IRQ?

    Une IRQ, ou requête d'interruption, est un signal électrique à deux états : levé (actif) ou baissé (inactif). Levée signifie que l'interruption est demandée.

    Signup and view all the flashcards

    Que connectent les IRQ ?

    Les IRQ sont des signaux électriques qui relient les contrôleurs de périphériques (comme un terminal TTY) aux processeurs.

    Signup and view all the flashcards

    Que signifie masquer une IRQ ?

    Masquer une IRQ signifie bloquer le signal entre sa source et sa destination. L'IRQ est toujours levée, mais le processeur ne la reçoit pas.

    Signup and view all the flashcards

    Qui peut masquer une IRQ ?

    Le composant ICU et le processeur MIPS peuvent masquer une IRQ.

    Signup and view all the flashcards

    Qu'est-ce qu'une ISR ?

    Une ISR (Interrupt Service Routine) est une fonction C appelée en réponse à une interruption. Elle gère l'événement qui a déclenché l'IRQ.

    Signup and view all the flashcards

    Où sont branchées les IRQ des TTYs et TIMER ?

    Les IRQ provenant des TTYs et du TIMER sont connectées à des entrées spécifiques de l'ICU.

    Signup and view all the flashcards

    Quel est le rôle du tableau IRQ_VECTOR_ISR[] ?

    Le tableau IRQ_VECTOR_ISR[] est utilisé pour stocker les adresses des fonctions ISR associées à chaque IRQ. Chaque case du tableau correspond à un numéro d'IRQ, et la valeur dans la case est l'adresse de la fonction ISR à appeler pour cet IRQ.

    Signup and view all the flashcards

    Quel est le rôle du tableau IRQ_VECTOR_DEV[] ?

    Le tableau IRQ_VECTOR_DEV[] stocke le numéro d'instance du périphérique associé à chaque IRQ. Cela permet de distinguer les périphériques multiples qui partagent la même IRQ.

    Signup and view all the flashcards

    Quel est le rôle du coprocesseur 0 dans la gestion des interruptions ?

    Le coprocesseur 0 est utilisé pour gérer les interruptions et les exceptions dans le MIPS. Il comprend des registres dédiés à la gestion des états d'interruption.

    Signup and view all the flashcards

    Quel est le rôle du registre c0_status ?

    Le registre c0_status (aussi appelé c0_sr) contrôle l'activation et la désactivation des interruptions. Le bit HWI0 de ce registre est spécifiquement utilisé pour le masquage des interruptions.

    Signup and view all the flashcards

    Quel est le rôle du registre c0_cause ?

    Le registre c0_cause contient des informations sur la raison de l'entrée dans le noyau, que ce soit par une interruption, une exception ou un appel système.

    Signup and view all the flashcards

    Quelles sont les fonctions des bits UM, IE et EXL dans les registres c0_status et c0_cause ?

    Les bits UM (User Mode), IE (Interruption Enable) et EXL (Exception Level) dans les registres c0_status et c0_cause identifient le mode d'exécution du processeur. Ils déterminent si le processeur est en mode utilisateur (User Mode), si les interruptions sont activées, et si le processeur est en mode exceptionnel.

    Signup and view all the flashcards

    Comment le noyau accède aux registres des contrôleurs de périphériques ?

    Les registres des contrôleurs de périphériques sont situés à des adresses spécifiques dans l'espace d'adressage du système. Le noyau connaît ces adresses en utilisant des tables de mapping qui associent les adresses physiques des périphériques à des adresses logiques utilisées par le noyau.

    Signup and view all the flashcards

    Comment le Kernel utilise les informations stockées dans les tables IRQ_VECTOR_ISR[] et IRQ_VECTOR_DEV[] ?

    Le Kernel utilise les informations stockées dans les tables IRQ_VECTOR_ISR[] et IRQ_VECTOR_DEV[] pour savoir quel ISR appeler et quel périphérique est à l'origine de l'interruption.

    Signup and view all the flashcards

    Comment filtrer les interruptions des TTYs ?

    Le registre ICU_MASK est utilisé pour filtrer les interruptions reçues par le processeur. Pour recevoir uniquement les interruptions des 4 TTYs, il faut mettre à 1 les bits 10, 11, 12 et 13 du registre ICU_MASK. Cela revient à écrire 0b00000000.00000000.00111100.00000000, soit 0x00003C00 en héxadécimal.

    Signup and view all the flashcards

    Comment activer une interruption ?

    L'écriture directe dans le registre ICU_MASK n'est pas possible. Pour activer une interruption, il faut écrire 1 dans le bit correspondant du registre ICU_SET.

    Signup and view all the flashcards

    Comment gérer plusieurs périphériques et leurs interruptions ?

    Pour démasquer uniquement le TTY1 et le TIMER, et masquer le TTY0, on doit activer les bits 2 et 14 du registre ICU_SET (pour TTY1 et TIMER) et désactiver le bit 5 du registre ICU_CLEAR (pour TTY0).

    Signup and view all the flashcards

    Quel est le rôle du registre ICU_MASK ?

    Le registre ICU_MASK détermine quelles interruptions sont transmises au processeur. Chaque bit du registre représente une interruption spécifique. La valeur de chaque bit indique si l'interruption est active (1) ou masquée (0).

    Signup and view all the flashcards

    Quel est le rôle du registre ICU_MASK dans l'ICU ?

    L'ICU (interrupt controller unit) gère les interruptions provenant des périphériques. Le registre ICU_MASK est un registre clé de l'ICU, car il permet de déterminer quelles interruptions sont transmises au processeur.

    Signup and view all the flashcards

    Study Notes

    Gestion des Interruptions

    • Les interruptions (IRQ) sont des signaux électriques à 2 états (actif/inactif) générés par des contrôleurs de périphériques (TTY, ICU, TIMER) pour signaler un événement.
    • Les interruptions sont levées par les périphériques pour avertir le processeur d'un événement (par exemple fin de commande, données arrivées).
    • Lorsque l'IRQ est levée, le programme en cours est interrompu et le processeur est redirigé vers le noyau pour exécuter la Routine de Service d'Interruption (ISR) correspondante.
    • Les ISR sont des fonctions exécutées par le noyau pour gérer les demandes des périphériques.
    • Chaque ISR reçoit l'identifiant du périphérique qui a levé l'IRQ, accède aux registres du périphérique et acquitte l'IRQ (désactive le signal).

    Contrôleurs de périphériques

    • Les contrôleurs de périphériques (TTY, ICU, TIMER) communiquent via des registres mappés en mémoire.
    • Les adresses des registres sont fixées par le fabricant du matériel et sont définies dans le fichier idscript (kernel.ld).
    • Les adresses des contrôleurs sont situées dans la mémoire au-dessus de l'adresse 0x80000000, étant en mode noyau.

    IRQ et ISR

    • IRQ : Requêtes d'Interruption
    • ISR : Routine de Service d'Interruption
    • Les IRQ sont des signaux qui restent actifs jusqu'à ce qu'une ISR les ait traités.
    • Une ISR doit accéder aux registres du périphérique pour répondre à la demande et acquitter l'interruption (c'est-à-dire faire baisser/désactiver l'IRQ).
    • L'acquittement diffère selon le périphérique (par exemple, lire le registre TTY_READ pour le TTY, écrire sur le registre TIMER_RSTIRQ pour le TIMER).

    Routage et masquage des IRQ

    • Les IRQ des contrôleurs de périphériques sont regroupées par l'ICU (contrôleur d'interruptions).
    • L'ICU combine les différents signaux IRQ provenant de TTY et TIMER, et produit un signal unique (MIRQ) à envoyer au processeur (MIPS).
    • Le processeur peut masquer les IRQ pour éviter d'être interrompu lors d'opérations critiques.
    • Le masquage peut se faire au niveau de l'ICU (avec les registres ICU_MASK, ICU_SET et ICU_CLEAR) ou du processeur.

    Registres du Coprocesseur 0

    • Les registres c0_status, c0_cause et c0_epc sont importants lors des interruptions.
    • c0_status contrôle l'activation/désactivation des interruptions, le mode d'exécution (Mode utilisateur ou noyau).
    • c0_cause indique la cause de l'interruption (IRQ, syscall, exception).
    • c0_epc contient l'adresse de l'instruction à reprendre après l'interruption.

    Vecteur d'interruption

    • Le vecteur d'interruption contient la correspondance entre un numéro d'interruption et l'ISR correspondante.
    • Le tableau IRQ_VECTOR_ISR contient les pointeurs vers les fonctions ISR.
    • Le tableau IRQ_VECTOR_DEV contient l'identifiant du périphérique qui a provoqué l'interruption.

    Conséquences dans le noyau

    • Le noyau utilise des tableaux pour gérer les IRQ.
    • Le noyau stocke les pointeurs vers les ISR et les identifiants des périphériques dans ces tableaux.
    • Ces tableaux permettent d'obtenir rapidement l'ISR correcte à exécuter en fonction de l'interruption.

    Questions

    • Les questions posées dans le document portent sur la mise en place et le fonctionnement des mécanismes d'interruption.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Description

    Ce quiz explore les détails des registres MIPS, notamment c0_status et ICU_MASK. Il couvre également l'interaction des bits de statut et leur impact sur les interruptions. Testez vos connaissances sur la gestion des IRQ et les opérations liées aux registres spécifiques du MIPS.

    More Like This

    Use Quizgecko on...
    Browser
    Browser