Qu'est-ce que Scrutation (polling) ?

Méthode où le CPU interroge de façon répétée l'état d'un périphérique pour en détecter les changements. Simple, mais elle consomme du temps et de l'énergie même lorsque rien ne se passe.

Nom japonais: ポーリング

« Scrutation (polling) » apparaît dans 3 questions d'entraînement réparties sur 3 thèmes, dont Système d'exploitation et matériel, Systèmes embarqués et firmware, CPU et architecture.

Domaine: Systèmes embarqués et firmware

Comment fonctionne la scrutation

Avec la scrutation (polling), le CPU s'informe de l'état d'un périphérique en lisant son registre d'état en boucle, par exemple en testant l'indicateur « données reçues prêtes » d'un UART jusqu'à ce qu'il soit positionné, puis en lisant l'octet. Le test peut être une attente active serrée ou une vérification périodique dans la boucle principale ou dans une routine de timer. La scrutation est simple à écrire et à déboguer, et son timing est prévisible, car les tests ont lieu exactement là où le programme les place. En C, le pointeur vers le registre doit être déclaré volatile pour que le compilateur relise réellement le matériel à chaque passage au lieu de réutiliser une valeur mise en cache.

Scrutation ou interruptions

Avec les interruptions, le périphérique signale au CPU qu'un événement s'est produit ; le CPU suspend son travail en cours, sauvegarde son état, exécute un gestionnaire puis reprend. Le CPU reste ainsi libre d'effectuer d'autres tâches ou de dormir pendant l'attente, ce qui compte pour les appareils sur batterie. La scrutation consomme du temps CPU et de l'énergie même lorsque rien n'a changé, et son temps de réaction dans le pire cas est fixé par l'intervalle de scrutation. Chaque interruption, en revanche, entraîne un surcoût fixe pour entrer dans le gestionnaire et en sortir, que la scrutation évite.

Quand la scrutation est le meilleur choix

La scrutation l'emporte lorsque les événements sont si fréquents que le surcoût par interruption deviendrait prépondérant. Le traitement réseau à haut débit est le cas classique : sous forte charge, les pilotes passent d'une interruption par paquet à la scrutation de lots de paquets, et certains frameworks de traitement de paquets consacrent des cœurs à une scrutation continue. La scrutation convient aussi aux attentes très courtes, comme un indicateur d'état qui sera prêt en quelques cycles, au code de démarrage simple où les interruptions ne sont pas encore configurées, et aux boucles de régulation qui doivent échantillonner à des instants strictement fixes.

Approches hybrides

Les systèmes réels combinent souvent les deux. Une interruption réveille le CPU, puis le gestionnaire scrute pour vider toutes les données en attente avant de réactiver l'interruption ; une rafale d'événements ne coûte ainsi qu'une interruption au lieu de plusieurs. Le DMA (accès direct à la mémoire) réduit le besoin de l'une comme de l'autre en déplaçant les données sans intervention du CPU et en ne signalant que l'achèvement d'un bloc entier. Il faut être prudent avec les registres d'état dont les indicateurs sont effacés par leur lecture même, car une lecture supplémentaire peut faire disparaître silencieusement un événement.

S'entraîner : questions sur Scrutation (polling)

Dans quel cas la scrutation (polling), où le CPU examine de façon répétée l’état d’un périphérique sans utiliser d’interruptions, est-elle avantageuse ?

  1. ALorsque les traitements surviennent à très haute fréquence et que le coût de commutation de chaque interruption est élevé
  2. BLorsque les traitements ne surviennent que très rarement et que l’on veut utiliser le CPU pour d’autres tâches
  3. CLorsque l’on veut laisser le CPU au repos longtemps pour réduire au maximum la consommation
Afficher la réponse et l'explication

Réponse : A. Lorsque les traitements surviennent à très haute fréquence et que le coût de commutation de chaque interruption est élevé

Les interruptions évitent de gaspiller le CPU lorsque les traitements sont rares, mais chacune impose un coût de sauvegarde d’état et de passage au gestionnaire. Lorsque les traitements sont très fréquents, comme sur un réseau haut débit, le coût cumulé des interruptions empêche de suivre la cadence, et une scrutation groupée devient plus efficace. Si les traitements sont rares ou si l’on veut mettre le CPU au repos pour économiser l’énergie, une scrutation qui tourne à vide est très coûteuse et les interruptions conviennent mieux.

Parmi les méthodes de connaissance de l'état d'un périphérique, quelle différence entre scrutation (polling) et interruption est correcte ?

  1. AEn scrutation, le processeur vérifie l'état de façon répétée ; en interruption, le périphérique avertit le processeur lorsque l'état change
  2. BLa scrutation et l'interruption sont identiques
  3. CL'interruption est la méthode où le processeur vérifie l'état de façon répétée
Afficher la réponse et l'explication

Réponse : A. En scrutation, le processeur vérifie l'état de façon répétée ; en interruption, le périphérique avertit le processeur lorsque l'état change

La scrutation est simple et son intervalle de vérification fixe rend le comportement prévisible, mais le processeur vérifie en permanence même lorsque rien ne se passe, gaspillant temps et énergie. Avec les interruptions, le processeur ne réagit qu'en cas de changement et peut effectuer d'autres traitements ou se mettre en veille entre-temps. Toutefois, des interruptions très fréquentes alourdissent au contraire le traitement ; il faut donc choisir judicieusement.

Questions fréquentes

Quelle est la différence entre scrutation et interruptions ?

Avec la scrutation, le CPU vérifie de façon répétée l'état d'un périphérique ; avec les interruptions, le périphérique prévient le CPU lorsque son état change. La scrutation est plus simple et prévisible, tandis que les interruptions permettent au CPU d'effectuer d'autres tâches ou de dormir entre-temps.

Pourquoi un registre scruté doit-il être déclaré volatile en C ?

Sans volatile, le compilateur peut supposer que la valeur ne change pas et ne la lire qu'une fois, transformant la boucle de scrutation en boucle infinie. volatile impose une nouvelle lecture du registre matériel à chaque itération.

La scrutation est-elle toujours inefficace ?

Non. Lorsque les événements arrivent à un rythme très élevé, la scrutation évite le surcoût de sauvegarde et de restauration de chaque interruption et peut traiter les événements par lots, ce qui la rend plus efficace que les interruptions.

« Scrutation (polling) » dans les explications

Questions mentionnant « Scrutation (polling) » (3)

  1. Dans quel cas la scrutation (polling), où le CPU examine de façon répétée l’état d’un périphérique sans utiliser d’interruptions, est-elle avantageuse ?
  2. Parmi les méthodes de connaissance de l'état d'un périphérique, quelle différence entre scrutation (polling) et interruption est correcte ?
  3. Quel mécanisme du processeur suspend temporairement le traitement en cours pour traiter en priorité une demande, par exemple d'un périphérique externe ?

Comparatifs incluant ce terme

Termes associés

Interruption Débit (throughput) Gestionnaire d'interruption Anti-rebond (debounce) Capture d'entrée (input capture) Chargeur d'amorçage (bootloader) Chien de garde (watchdog timer) Débit en bauds Détection de baisse de tension (brown-out) GPIO

Retour au glossaire