Quelques correspondances RISC-V et x86.

This commit is contained in:
Philippe Pittoli 2025-02-21 06:32:34 +01:00
parent 22ac94674b
commit 2ba33d1f92

View file

@ -0,0 +1,25 @@
Équivalent RISC-V de quelques concepts de x86 (IDT, TSS, Interrupt Relay et GDT).
### 1. **Interrupt Descriptor Table (IDT)**
- **Description** : Dans l'architecture x86, l'IDT est une table utilisée par le processeur pour gérer les interruptions et les exceptions. Elle contient des descripteurs qui pointent vers les routines de traitement d'interruptions (ISR, Interrupt Service Routines).
- **Équivalent en RISC-V** : RISC-V utilise un mécanisme similaire appelé **Interrupt Vector Table** (IVT). Cette table contient des adresses de saut vers les routines de traitement d'interruptions. RISC-V permet également une gestion flexible des interruptions via des registres de contrôle et des modes privilégiés (Machine, Supervisor, User).
### 2. **Task State Segment (TSS)**
- **Description** : En x86, le TSS est une structure de données utilisée pour stocker l'état d'une tâche (comme les registres, la pile, etc.) lors d'un changement de contexte. Il est principalement utilisé pour la gestion des tâches en mode protégé.
- **Équivalent en RISC-V** : RISC-V n'a pas de TSS directement équivalent. Cependant, le changement de contexte en RISC-V est géré via des registres et des instructions spécifiques (comme `mret`, `sret` pour retourner d'une interruption ou d'une exception). L'état du processeur est sauvegardé et restauré manuellement ou via des mécanismes logiciels.
### 3. **Interrupt Relay**
- **Description** : Ce terme fait référence à un mécanisme où les interruptions sont relayées d'un composant à un autre. Par exemple, dans un système multicœur, une interruption peut être relayée d'un cœur à un autre pour traitement.
- **Équivalent en RISC-V** : RISC-V supporte des mécanismes similaires via des contrôleurs d'interruptions (PLIC, Platform-Level Interrupt Controller) qui permettent de router les interruptions entre les cœurs ou les périphériques. Le PLIC est souvent utilisé pour gérer les interruptions dans des systèmes multicœurs.
### 4. **Global Descriptor Table (GDT)**
- **Description** : En x86, la GDT est une table utilisée pour définir les segments de mémoire (code, données, etc.) et leurs attributs (niveau de privilège, type, etc.). Elle est essentielle pour la gestion de la mémoire en mode protégé.
- **Équivalent en RISC-V** : RISC-V n'utilise pas de segmentation mémoire comme en x86, donc il n'y a pas de GDT. À la place, RISC-V utilise une gestion de mémoire basée sur la pagination (via des tables de pages) pour isoler les espaces d'adressage des différents modes privilégiés (Machine, Supervisor, User).
### Résumé pour RISC-V :
- **IDT****Interrupt Vector Table (IVT)**.
- **TSS** → Pas d'équivalent direct, gestion manuelle ou logicielle du contexte.
- **Interrupt Relay** → Géré via des contrôleurs d'interruptions comme le PLIC.
- **GDT** → Pas d'équivalent, utilisation de la pagination pour la gestion de la mémoire.
Si tu travailles sur RISC-V, il est important de te familiariser avec les spécifications officielles et les extensions disponibles (comme l'extension "A" pour les interruptions atomiques). Ces concepts sont souvent implémentés différemment selon les systèmes et les niveaux de privilège.