PLIC
Sigle de contrôleur d'interruption au niveau de la plateforme. Dans l'architecture RISC-V, c'est un composant responsable du routage des interruptions de leurs causes vers les cœurs (harts).
Le PLIC: le contrôleur de trafic pour les interruptions du processeur
Un PLIC est un composant matériel dans les systèmes RISC-V qui se situe entre les sources d'interruption (périphériques, temporisateurs, dispositifs externes) et les cœurs de processeur (appelés harts dans la terminologie RISC-V). Son rôle est simple: lorsqu'un dispositif a besoin d'attention, le PLIC reçoit le signal, décide quel hart doit le gérer et délivre l'interruption. Sans PLIC, chaque hart aurait besoin de connexions directes à chaque source d'interruption, ce qui deviendrait ingérable dans les systèmes avec de nombreux cœurs et de nombreux dispositifs.
Le PLIC gère les interruptions en attribuant à chaque source un niveau de priorité, généralement de 0 à 15 ou plus, selon l'implémentation. Il prend également en charge les registres de seuil: chaque hart peut définir une valeur de seuil, ce qui signifie qu'il n'acceptera que les interruptions dont la priorité est supérieure à ce seuil. Cela permet à un cœur de reporter temporairement des tâches de faible priorité ou de rejeter des classes entières d'interruptions pendant les sections critiques. Le PLIC suit les interruptions en attente, celles qui sont activées et quel hart doit gérer chacune d'elles.
Routage et sélection du Hart
Le PLIC peut acheminer une seule source d'interruption vers plusieurs harts ou vers des harts spécifiques uniquement. Dans certaines conceptions, une interruption est revendiquée par le premier hart qui lit le registre de revendication du PLIC; dans d'autres, le PLIC lui-même sélectionne le hart cible. La logique de sélection prend en compte la priorité, le seuil et parfois l'équilibrage de charge. Une fois qu'un hart revendique une interruption, il doit terminer son traitement, puis écrire un registre de complétion pour signaler au PLIC qu'il a terminé. Cela permet au PLIC de désactiver l'interruption et potentiellement de l'envoyer à un autre hart si nécessaire.
Les implémentations de PLIC varient. Les conceptions simples sont câblées avec un nombre fixe de sources d'interruption et de harts; les systèmes complexes incluent des contextes configurables (un hart peut avoir des contextes M-mode et S-mode distincts, chacun avec son propre seuil et ses registres de revendication). Le PLIC lui-même est généralement mappé en mémoire, occupant une plage d'adresses contiguë à laquelle le logiciel accède via des instructions de chargement et de stockage. Les implémentations typiques allouent environ 4 octets par source d'interruption plus 8 octets par contexte de hart, de sorte que l'empreinte mémoire augmente avec l'échelle.
En pratique, des problèmes surviennent lorsque les priorités d'interruption sont mal configurées, ce qui entraîne une privation des dispositifs sensibles à la latence par des sources de priorité inférieure, ou lorsque le seuil est réglé trop haut, ce qui entraîne la perte d'interruptions. Le rôle du PLIC le rend invisible pendant le fonctionnement normal, mais critique lors de l'intégration du système. Le débogage nécessite souvent d'examiner directement les registres mappés en mémoire pour voir quelles interruptions sont en attente ou activées, et quels contextes de hart les ont revendiquées.
Sources
- Source de la définitionWiktionary