Se connecterS'abonner

Chapitre 9

Understanding Peripheral Communication and Data Transfer

Lecture : 22 minQuiz de 12 questions

# Understanding Peripheral Communication and Data Transfer ## Objectifs et prérequis **Objectifs** : À la fin de ce chapitre, l'élève sera capable de : - Décrire les périphériques d'entrée/sortie (I/O) et leurs interfaces courantes dans un système informatique. - Expliquer le rôle et le fonctionnement d'un contrôleur d'entrée/sortie (I/O Controller) dans la gestion des communications entre le CPU et les périphériques. - Analyser les mécanismes de transfert de données (programmé, interrompu, DMA) et leurs avantages/inconvénients. - Résoudre des problèmes pratiques liés à la configuration et à l'optimisation du transfert de données entre périphériques et mémoire. - Intégrer les connaissances acquises dans une activité de conception simplifiée d'un système d'entrée/sortie. **Prérequis** : Connaissances de base en architecture d'ordinateur (CPU, mémoire principale, bus système), représentation binaire des données, notions élémentaires de logique numérique (états haut/bas, horloge), et familiarité avec les concepts de registre et d'adressage mémoire. --- ## Introduction Dans un système informatique, le processeur (CPU) ne peut pas interagir directement avec les périphériques externes tels que le clavier, l'écran, le disque dur ou une imprimante en raison de différences de vitesse, de format de données et de protocoles de communication. Pour pallier cet écart, des intermédiaires matériels et logiques sont nécessaires : les périphériques d'entrée/sortie (I/O) et leurs interfaces, ainsi que le contrôleur d'entrée/sortie (I/O Controller). Ce chapitre explore en détail la manière dont ces composants permettent une communication fiable et efficace entre le CPU et le monde extérieur, en mettant l'accent sur les mécanismes de transfert de données. Nous examinerons successivement les périphériques et leurs interfaces, le rôle central du I/O Controller, puis nous appliquerons ces concepts dans une activité d'intégration pratique. --- ## I. Périphériques et Interfaces ### Définition et classification des périphériques Un périphérique d'entrée/sortie (I/O device) est tout composant matériel connecté à un ordinateur qui permet soit d'introduire des données dans le système (entrée), soit de recevoir des données provenant du système (sortie), ou les deux (entrée/sortie). > **Définition** : Un périphérique d'entrée (input device) transmet des données depuis l'utilisateur ou l'environnement vers le CPU (ex. : clavier, souris, capteur). > **Définition** : Un périphérique de sortie (output device) reçoit des données du CPU pour les présenter à l'utilisateur ou les envoyer vers l'environnement (ex. : écran, imprimante, haut-parleur). > **Définition** : Un périphérique d'entrée/sortie (I/O device) effectue les deux fonctions (ex. : disque dur, carte réseau, modem). Les périphériques sont également classés selon leur taux de transfert de données : - **Lents** : clavier, souris (quelques octets par seconde). - **Moyens** : imprimante, scanner (kilooctets à mégaoctets par seconde). - **Rapides** : disque dur SSD, carte réseau Gigabit, carte graphique (mégaoctets à gigaoctets par seconde). ### Interfaces de périphériques Une interface est le point de connexion matérielle et logique entre un périphérique et le bus système de l'ordinateur. Elle définit les caractéristiques électriques, mécaniques, fonctionnelles et procédurales pour l'échange de données. > **Définition** : Une interface I/O spécifie les broches physiques, les niveaux de tension, les protocoles de synchronisation, les formats de trame et les méthodes d'adressage utilisés pour communiquer avec un périphérique. #### Interfaces courantes | Interface | Type de périphérique | Vitesse maximale | Broches | Caractéristiques | |----------|----------------------|------------------|---------|------------------| | USB 2.0 | Clavier, disque, webcam | 480 Mbit/s | 4 | Hot-plug, alimentation via bus | | USB 3.0 | Disque SSD, caméra HD | 5 Gbit/s | 9 | Full-duplex, meilleure gestion de l'alimentation | | SATA | Disque dur, SSD | 6 Gbit/s | 7 | Point-to-point, câble fin, hot-plug limité | | HDMI | Écran, projecteur | 18 Gbit/s | 19 | Audio/vidéo numérique, protection HDCP | | Ethernet | Carte réseau | 1 Gbit/s (GbE) | 8 | Twisted pair, protocole TCP/IP dessus | | PCIe | Carte graphique, SSD NVMe | 32 GT/s (x16) | Variable | Série, lanes indépendantes, faible latence | > **Règle** : Une interface série transmet un bit à la fois sur une seule ligne (ex. : USB, SATA, PCIe), tandis qu'une interface parallèle transmet plusieurs bits simultanément sur plusieurs lignes (ex. : ancien port parallèle Centronics). Les interfaces série modernes offrent généralement de meilleures vitesses grâce à moins d'interférences et à l'horloge intégrée. #### Exemple résolu : Interface USB 2.0 Un clavier USB 2.0 envoie une touche appuyée toutes les 10 ms en moyenne. Chaque événement de touche nécessite 8 octets de données (code de touche, modificateurs, etc.). **Question** : Quel est le débit moyen de données utilisé par le clavier sur l'interface USB 2.0 ? **Solution** : - Données par événement : 8 octets = 64 bits - Fréquence : 1 événement / 0,01 s = 100 événements/s - Débit = 64 bits × 100 /s = 6 400 bit/s = 6,4 kbit/s Comme l'USB 2.0 supporte jusqu'à 480 Mbit/s, le clavier utilise une fraction négligeable de la bande passante disponible. **Exercice 1** : Une webcam USB 3.0 transmet une vidéo en résolution 1280×720 à 30 images par seconde. Chaque pixel utilise 24 bits (8 bits par couleur RGB). Calculer le débit théorique nécessaire. Comparer à la capacité maximale de l'USB 3.0 (5 Gbit/s). **Corrigé** : - Bits par image = 1280 × 720 × 24 = 221 184 000 bits - Débit = 221 184 000 × 30 = 6 635 520 000 bit/s ≈ 6,64 Gbit/s - Cela dépasse la capacité de l'USB 3.0 (5 Gbit/s). Donc, soit la résolution/fréquence doit être réduite, soit une compression (ex. : H.264) est nécessaire. **Exercice 2** : Un disque dur SATA transfère un fichier de 4 Go. Quelle est la durée minimale théorique de transfert si l'interface fonctionne à sa vitesse maximale de 6 Gbit/s ? **Corrigé** : - 4 Go = 4 × 8 = 32 Gbit - Temps = 32 Gbit / 6 Gbit/s = 5,33 s - Remarque : En pratique, le temps est plus long à cause des latences d'accès, du protocole et du partage de bus. --- ## II. Le Contrôleur d'Entrée/Sortie (I/O Controller) ### Rôle et fonction Le CPU ne peut pas gérer directement la communication avec les périphériques en raison de leurs vitesses très variables et de la nécessité de respecter des protocoles spécifiques. Le contrôleur d'entrée/sortie (I/O Controller), aussi appelé contrôleur de périphérique ou adaptateur d'interface, est un circuit spécialisé qui agit comme intermédiaire entre le CPU et un périphérique ou une classe de périphériques. > **Définition** : Un I/O Controller est un dispositif matériel (souvent intégré sur la carte mère ou sur une carte d'extension) qui gère la communication entre le CPU et un périphérique en traduisant les commandes du CPU en signaux compatibles avec le périphérique, et vice versa. Il effectue principalement trois fonctions : 1. **Décodage d'adresse** : Reconnaître quand le CPU adresse une commande à ce périphérique spécifique. 2. **Mise en tampon (buffering)** : Stocker temporairement les données pour compenser les différences de vitesse entre CPU et périphérique. 3. **Gestion du protocole** : Générer et interpréter les signaux de contrôle, d'horloge et de données selon l'interface (ex. : handshake USB, commande ATA pour SATA). ### Structure interne d'un I/O Controller Un I/O Controller typique comprend : - Un ensemble de **registres d'état et de contrôle** accessibles par le CPU via des adresses E/S ou mémoire. - Un **buffer de données** (souvent une petite RAM ou FIFO). - Un **générateur d'horloge** ou un récupérateur d'horloge pour la synchronisation. - Une logique de **décodage d'adresse** et de **sélection de périphérique**. - Une interface vers le **bus système** (pour les commandes/états) et une interface vers le **périphérique** (ex. : broches SATA, USB). > **Règle** : Le CPU communique avec l'I/O Controller en lisant ou en écrivant dans ses registres, exactement comme il accéderait à la mémoire, mais en utilisant un espace d'adressage dédié (E/S isolé) ou en mappant ces registres dans l'espace mémoire (memory-mapped I/O). ### Modes de fonctionnement Le I/O Controller peut fonctionner selon différents modes, selon qui initie le transfert et comment les données sont déplacées : #### 1. Transfert programmé (Programmed I/O - PIO) Dans ce mode, le CPU effectue explicitement chaque étape du transfert de données en lisant ou écrivant dans les registres de l'I/O Controller, en attendant souvent que le périphérique soit prêt (polling). > **Définition** : Dans le transfert programmé, le CPU surveille activement l'état du périphérique via des lectures répétées de son registre d'état jusqu'à ce qu'il signale qu'il est prêt à envoyer ou recevoir des données. **Étapes du PIO pour une entrée** : 1. Le CPU lit le registre d'état de l'I/O Controller. 2. Il vérifie le drapeau "Donnée disponible" (Data Ready). 3. Si non prêt, il boucle (polling). 4. Si prêt, il lit le registre de données. 5. Il stocke la donnée en mémoire. 6. Il répète pour le prochain octet. **Inconvénient** : Le CPU est occupé à attendre, ce qui gaspille des cycles précieux, surtout avec des périphériques lents. **Avantage** : Simple à implémenter, pas besoin d'interruption ni de DMA. #### 2. Transfert interrompu (Interrupt-Driven I/O) Ici, le périphérique signale au CPU qu'il est prêt via une interruption matérielle. Le CPU peut alors vaquer à d'autres tâches et répondre seulement quand il est notifié. > **Définition** : Dans le transfert interrompu, le périphérique envoie un signal d'interruption (IRQ) au CPU lorsqu'il a terminé une opération ou qu'il est prêt pour la suivante, permettant au CPU de suspendre son traitement actuel pour exécuter une routine de service d'interruption (ISR). **Étapes** : 1. Le CPU lance une opération (ex. : lecture disque) et continue son travail. 2. Quand le périphérique est prêt, il active sa ligne IRQ. 3. Le CPU termine l'instruction en cours, sauvegarde son état, et exécute l'ISR associée à cette IRQ. 4. L'ISR lit les données depuis l'I/O Controller et les stocke en mémoire. 5. Le CPU restaure son état et reprend le travail principal. **Avantage** : Le CPU n'est pas bloqué en attente ; efficace pour les périphériques intermittents (clavier, souris). **Inconvénient** : Surcoût lié à la sauvegarde/restauration du contexte et à l'exécution de l'ISR ; peut devenir inefficace si les interruptions sont trop fréquentes (ex. : réception réseau à haut débit). #### 3. Transfert par accès direct à la mémoire (DMA - Direct Memory Access) Dans ce mode, l'I/O Controller (ou un contrôleur DMA dédié) prend temporairement le contrôle du bus système pour transférer des données directement entre le périphérique et la mémoire principale, sans intervention du CPU pour chaque mot de données. > **Définition** : Le DMA permet à un périphérique ou à un contrôleur DMA d'accéder directement à la mémoire principale en empruntant le bus système, sous le contrôle du CPU qui ne fait qu'initialiser et terminer l'opération. **Étapes du DMA** : 1. Le CPU programme le contrôleur DMA : adresse mémoire de départ, nombre de mots à transférer, direction (lecture/écriture), et active le canal. 2. Le contrôleur DMA demande l'accès au bus (signal HRQ - Hold Request). 3. Le CPU accorde l'accès (signal HLDA - Hold Acknowledge) et libère le bus. 4. Le contrôleur DMA transfère les données mot par mot entre périphérique et mémoire, en incrémentant l'adresse et en décrémentant le compteur. 5. Quand le compteur atteint zéro, il envoie une interruption au CPU pour signaler la fin du transfert. 6. Le CPU reprend le contrôle du bus. **Avantage** : Libère complètement le CPU pendant le transfert de bloc ; idéal pour les transferts volumineux et rapides (disque, carte réseau, acquisition vidéo). **Inconvénient** : Nécessite du matériel supplémentaire (contrôleur DMA) et une gestion de la cohérence du bus (risque de conflit si CPU et DMA accèdent à la même zone mémoire simultanément). > **Règle** : En mode DMA, le CPU est libéré uniquement pendant les phases de transfert réel de données ; il reste nécessaire pour l'initialisation et la gestion de la fin de transfert. #### Comparaison des modes de transfert | Critère | PIO | Interrompu | DMA | |--------|-----|------------|-----| | Implication du CPU | Élevée (polling actif) | Faible (seulement lors de l'ISR) | Très faible (initialisation + fin) | | Efficacité CPU | Faible (surtout périphériques lents) | Bonne pour événements rares | Excellente pour transferts de bloc | | Complexité matérielle | Faible | Moyenne (contrôleur d'interruption) | Élevée (contrôleur DMA, arbitrage bus) | | Latence | Variable (dépend du polling) | Faible (réponse à IRQ) | Faible après initialisation | | Débit maximal | Limité par vitesse CPU | Limité par fréquence d'interruption | Proche de la vitesse du bus/périphérique | | Exemple d'utilisation | Clavier ancien, capteur simple | Souris, port série, réception réseau modérée | Disque dur, SSD, carte Gigabit Ethernet, acquisition audio/vidéo | > **Règle** : Le choix du mode dépend du taux de transfert, de la criticité du temps de réponse, et de la charge acceptable sur le CPU. On privilégie le DMA pour les gros blocs, l'interrompu pour les événements sporadiques, et le PIO uniquement pour des périphériques très lents ou des systèmes simples. ### Exemple résolu : Configuration d'un transfert DMA Un disque dur SATA doit transférer un bloc de 64 Ko vers la mémoire. Le contrôleur DMA est configuré avec : - Adresse mémoire de départ : 0x1000 0000 - Nombre de mots à transférer : 64 Ko / 4 octets par mot = 16 384 mots (supposant un bus de 32 bits) - Direction : lecture depuis le périphérique vers la mémoire **Question** : Quelle sera l'adresse mémoire finale après le transfert, et combien de cycles d'horloge sont nécessaires si chaque transfert de mot prend 2 cycles et que le bus fonctionne à 200 MHz ? **Solution** : - Adresse finale = adresse de départ + (nombre de mots × taille du mot) = 0x1000 0000 + (16 384 × 4) = 0x1000 0000 + 0x0010 0000 = 0x1010 0000 - Nombre total de cycles = 16 384 mots × 2 cycles/mot = 32 768 cycles - Temps = 32 768 cycles / 200 × 10⁶ cycles/s = 0,00016384 s = 0,164 ms **Exercice 1** : Un contrôleur DMA transfère des données depuis une carte réseau vers la mémoire à raison de 4 octets par transfert de bus. Si le débit réseau est de 100 Mbit/s, quelle est la fréquence minimale d'horloge du bus nécessaire pour soutenir ce débit sans sous-utilisation, en supposant un transfert par cycle d'horloge ? **Corrigé** : - 100 Mbit/s = 12,5 Mo/s = 12,5 × 10⁶ octets/s - Nombre de transferts par seconde = (12,5 × 10⁶) / 4 = 3,125 × 10⁶ transfers/s - Donc, fréquence d'horloge minimale = 3,125 MHz - Remarque : En pratique, on utilise une fréquence plus élevée pour gérer les protocoles et les aléas. **Exercice 2** : Comparer l'utilisation du CPU dans un transfert de 1 Mo via PIO (polling toutes les 100 ns) et via DMA (initialisation : 5 µs, fin : 5 µs, transfert : CPU libre). Supposer un CPU à 1 GHz (1 ns par cycle). **Corrigé** : - PIO : - 1 Mo = 1 048 576 octets - Temps par octet : polling jusqu'à prêt. Supposons que le périphérique soit toujours prêt après 1 lecture (optimiste). - Chaque lecture : 1 accès registre (disons 10 ns pour simplifier, incluant attente). - Temps total ≈ 1 048 576 × 10 ns = 10,48576 ms - CPU occupé 100 % pendant ce temps. - DMA : - Initialisation : 5 µs - Transfert : CPU libre - Fin : 5 µs - Temps CPU occupé = 10 µs = 0,01 ms - Donc, le DMA réduit l'occupation du CPU de ~10,5 ms à 0,01 ms, soit un gain de plus de 99,9 %. --- ## III. Activité d'Intégration : Conception d'un Système d'Entrée/Sortie Simple ### Objectif de l'activité Cette activité permet d'appliquer les notions de périphériques, d'interfaces et de contrôleur I/O en concevant une solution simplifiée pour un système d'acquisition de données à partir d'un capteur de température vers un ordinateur, en justifiant les choix d'interface, de mode de transfert et de gestion du contrôleur. ### Énoncé Vous devez concevoir un système permettant de lire la température toutes les 5 secondes à partir d'un capteur analogique (sortie tension proportionnelle à la température) et de l'enregistrer dans un fichier sur le disque dur d'un ordinateur. Le système doit être faible en coût et en consommation d'énergie. Vous devez : 1. Choisir un périphérique d'entrée approprié (capteur + interface de conditionnement). 2. Sélectionner une interface pour connecter ce périphérique à l'ordinateur. 3. Déterminer le mode de transfert de données le plus adapté (PIO, interrompu, DMA). 4. Justifier le rôle du I/O Controller dans votre conception. 5. Dessiner un schéma bloc simplifié montrant les interactions entre capteur, interface, I/O Controller, CPU, mémoire et disque. ### Solution attendue #### 1. Choix du périphérique d'entrée - Un capteur de température analogique (ex. : LM35) délivre 10 mV/°C. - Il faut convertir cette tension en valeur numérique : un **convertisseur analogique-numérique (CAN)** est nécessaire. - On choisit un module CAN externe (ex. : basé sur ADC0804 ou un CAN intégré à un microcontrôleur comme Arduino) avec une résolution de 8 bits (précision d'environ 0,5°C sur une plage de 0-100°C). - Le périphérique d'entrée est donc : **capteur LM35 + conditionneur + CAN 8 bits**. #### 2. Choix de l'interface - Le débit de données est extrêmement faible : une lecture toutes les 5 secondes → 0,2 Hz. - Chaque lecture : 1 octet (8 bits) du CAN. - Débit = 1 octet / 5 s = 0,2 octet/s = 1,6 bit/s. - Même l'interface la plus lente (port série classique à 300 baud) est largement suffisante. - On choisit l'**interface UART (Universal Asynchronous Receiver-Transmitter)** via un port série RS-232 ou USB-to-serial pour sa simplicité, son faible coût et sa présence universelle sur les ordinateurs. - Alternativement, on pourrait utiliser un **microcontrôleur avec USB CDC** (ex. : Arduino Uno) qui apparaît comme un port série virtuel sur l'ordinateur. > **Règle** : Pour des débits très faibles, privilégier les interfaces simples et peu coûteuses (UART, USB série) plutôt que des interfaces rapides surdimensionnées (USB 3.0, PCIe). #### 3. Mode de transfert - Le CPU n'a besoin de lire qu'un octet toutes les 5 secondes. - En PIO : le CPU pourrait simplement attendre 5 secondes, puis lire le registre de données du CAN via l'UART. Le polling serait inutilement coûteux si fait en boucle serrée, mais on peut faire dormir le CPU entre les lectures. - En mode interrompu : le CAN pourrait signaler qu'une donnée est prête via une interruption, mais comme les événements sont rares et prévisibles, cela ajoute de la complexité pour peu de gain. - En mode DMA : totalement inadapté pour un octet tous les 5 secondes ; le surcoût d'initialisation serait énorme comparé au bénéfice. - **Conclusion** : Le mode **PIO avec attente active ou sommeil** est le plus approprié. Le CPU effectue une lecture périodique (toutes les 5 s) du registre de données de l'UART/I/O Controller après avoir attendu le délai. > **Règle** : Pour des transferts très rares et peu volumineux, le PIO avec gestion temporelle (delay ou timer) est souvent plus efficace que l'interrompu ou le DMA, qui introduisent une surcharge inutile. #### 4. Rôle du I/O Controller - Dans ce système, l'I/O Controller est représenté par le **contrôleur UART** (soit intégré au chipset de la carte mère, soit sur un adaptateur USB-to-serial). - Ses fonctions : - Convertir les données série provenant du CAN (via un émetteur série si nécessaire) en données parallèles lisibles par le CPU. - Générer les signaux de contrôle (start bit, stop bit, parité) selon la configuration UART (ex. : 9600 baud, 8N1). - Mettre en tampon les octets reçus dans un registre de réception (buffer). - Permettre au CPU de lire l'octet reçu en accédant à son registre de données de réception. - Optionnellement, lever un drapeau "Donnée reçue" (RX Ready) que le CPU peut interroger (PIO) ou qui peut déclencher une interruption (si on choisissait ce mode). #### 5. Schéma bloc ``` [Capteur LM35] ↓ (tension analogique) [Conditionneur : amplification/filtrage si nécessaire] ↓ [Convertisseur Analogique-Numérique (CAN 8 bits)] ↓ (données parallèles 8 bits) [Émetteur UART série] ↓ (signal série : TX) [Interface physique : câble USB-to-serial ou RS-232] ↓ [Récepteur UART série (I/O Controller sur PC)] ↓ (données parallèles 8 bits) [Registre de données de l'UART (accessible par CPU)] ↓ [CPU : lit périodiquement toutes les 5 s] ↓ [Mémoire : stocke la valeur dans une variable] ↓ [Logiciel : convertit en température, écrit dans fichier sur disque dur] ↓ [Disque dur : accès via son propre I/O Controller (SATA) en mode DMA pour l'écriture du fichier] ``` > **À retenir** : Même dans un système simple, plusieurs niveaux d'I/O Controller interviennent : celui du périphérique (UART du capteur) et celui du périphérique de stockage (disque dur). Le CPU orchestre l'ensemble en initiant les lectures et en traitant les données. ### Application : Exercice d'intégration **Exercice** : Modifier la conception précédente pour relever la température toutes les 100 ms et afficher la valeur en temps réel sur un écran LCD connecté via USB. Justifier vos choix d'interface, de mode de transfert et de I/O Controller. **Corrigé** : - Nouveau débit : 10 lectures/s × 1 octet = 10 octets/s = 80 bit/s. - Toujours très faible, mais maintenant besoin de réactivité pour l'affichage temps réel. - Interface : On garde l'UART série (via USB-to-serial) pour sa simplicité et son coût nul si on utilise un microcontrôleur comme intermédiaire. - Alternative : On pourrait utiliser un **écran LCD avec interface I²C ou SPI**, mais cela nécessiterait un contrôleur supplémentaire. Comme l'affichage est sur l'ordinateur, il est plus logique que le microcontrôleur envoie les données à l'ordinateur, qui gère l'affichage à l'écran (via sa carte graphique, donc interface PCIe pour la GPU, mais cela est transparent pour notre conception). - Mode de transfert : Toujours PIO est suffisant. Le CPU peut lire toutes les 100 ms (via un timer ou sommeil). Pas besoin d'interrompu car le délai est régulier et prévisible. Le DMA serait inutile. - I/O Controller : Toujours l'UART côté PC pour recevoir les données. Côté microcontrôleur, son UART intégré sert d'I/O Controller pour émettre vers le PC. - Schéma : Le capteur → CAN → UART (émetteur) → USB → PC (UART récepteur) → CPU → mémoire → logique d'affichage → carte graphique → écran (via HDMI/DisplayPort, géré par le système d'exploitation). > **À retenir** : L'augmentation de la fréquence d'échantillonnage ne change pas fondamentalement le choix si le débit reste très faible par rapport aux capacités des interfaces standards. La simplicité et le coût restent des critères décisifs. --- ## Synthèse du chapitre - Les périphériques d'entrée/sortie permettent l'interaction entre l'ordinateur et le monde extérieur, classés par fonction (entrée, sortie, mixte) et par vitesse de transfert. - Une interface définit les caractéristiques physiques, électriques et procédurales pour connecter un périphérique au système ; les interfaces série modernes (USB, SATA, PCIe) dominent pour leur efficacité et leur évolutivité. - Le contrôleur d'entrée/sortie (I/O Controller) agit comme intermédiaire entre le CPU et les périphériques, gérant le décodage d'adresse, la mise en tampon et la traduction de protocoles. - Trois modes de transfert de données existent : - **PIO** : CPU actif, adapté aux périphériques très lents ou rares. - **Interrupt-driven** : CPU libéré entre événements, adapté aux périphériques intermittents à faible à moyen débit. - **DMA** : CPU totalement libéré pendant le transfert de bloc, essentiel pour les périphériques rapides et les gros volumes de données. - Le choix du mode dépend du débit, de la fréquence d'accès, de la latence acceptable et de la charge CPU souhaitée. - Dans les systèmes embarqués ou simples, le PIO avec gestion temporelle est souvent préférable pour sa faible complexité, même si le DMA ou l'interrompu sont plus performants en théorie. - Plusieurs I/O Controller peuvent être présents dans une chaîne d'acquisition de données (ex. : capteur → UART → PC → disque), chacun jouant son rôle spécialisé. --- ## Glossaire > **Bus système** : Ensemble de lignes de communication qui permettent au CPU, à la mémoire et aux périphériques d'échanger des données, des adresses et des signaux de contrôle. > **CAN (Convertisseur Analogique-Numérique)** : Dispositif électronique qui convertit une tension analogique continue en un nombre binaire représentant son amplitude. > **DMA (Direct Memory Access)** : Mécanisme permettant à un périphérique ou à un contrôleur dédié d'accéder directement à la mémoire principale sans intervention du CPU pour chaque mot de données transférés. > **E/S isolé (Isolated I/O)** : Méthode d'accès aux périphériques où le CPU utilise des instructions spéciales (IN/OUT) et un espace d'adressage dédié séparé de la mémoire principale. > **Handshake** : Protocole d'échange de signaux de contrôle entre deux dispositifs pour synchroniser leur communication (ex. : demande de transmission / acquit de réception). > **I/O Controller (Contrôleur d'Entrée/Sortie)** : Circuit spécialisé qui gère la communication entre le CPU et un périphérique en traduisant les commandes, en mettant en tampon les données et en gérant le protocole d'interface. > **Interrupt (Interruption)** : Signal matériel envoyé par un périphérique au CPU pour indiquer qu'il nécessite une attention immédiate, provoquant la suspension du traitement actuel et l'exécution d'une routine de service. > **Memory-mapped I/O** : Technique où les registres d'un périphérique sont mappés dans l'espace d'adressage mémoire normal, permettant au CPU d'y accéder avec des instructions classiques de lecture/écriture mémoire. > **PIO (Programmed Input/Output)** : Mode de transfert où le CPU effectue explicitement chaque étape de la lecture ou de l'écriture vers/from un périphérique en accédant à ses registres, souvent en attendant qu'il soit prêt via polling. > **Polling** : Processus par lequel le CPU vérifie répétitivement l'état d'un périphérique (via lecture de son registre d'état) pour déterminer s'il est prêt à envoyer ou recevoir des données. > **UART (Universal Asynchronous Receiver-Transmitter)** : Circuit intégré qui gère la communication série asynchrone en convertissant des données parallèles en série et vice versa, en ajoutant des bits de start, de stop et éventuellement de parité. > **Word (Mot)** : Groupe de bits traité comme une unité par le processeur ou le bus système (souvent 16, 32 ou 64 bits selon l'architecture).

Quiz du chapitre

12 questions — vérifie chaque réponse pour voir l'explication.

  1. 1. Which of the following is a characteristic of synchronous data transfer?
  2. 2. In the context of peripheral communication, what is the primary function of a UART?
  3. 3. Which peripheral interface is most commonly used for connecting high-speed storage devices like SSDs to a motherboard?
  4. 4. What does the term 'baud rate' refer to in serial communication?
  5. 5. A student connects a digital temperature sensor to a microcontroller using I²C. The sensor sends data incorrectly. Which of the following is the most likely cause?
  6. 6. In USB communication, what is the role of the host controller?
  7. 7. A technician is troubleshooting a printer that intermittently loses connection via USB. The cable is intact and the ports are clean. Which factor is most likely responsible?
  8. 8. Which statement correctly describes the difference between SPI and I²C in terms of hardware complexity and speed?
  9. 9. In a system using DMA for data transfer between a sound card and memory, what is the primary benefit?
  10. 10. A microcontroller is configured to use asynchronous serial communication at 9600 baud with 8 data bits, no parity, and 1 stop bit. How many total bits are transmitted per character?
  11. 11. Which of the following best explains why PCIe (Peripheral Component Interconnect Express) replaced older PCI and AGP buses in modern systems?
  12. 12. In a CAN bus system used in automotive applications, what happens when two nodes transmit simultaneously and one sends a dominant bit while the other sends a recessive bit?