RISC-V equivalent of the x86 CPUID.
This commit is contained in:
parent
2ba33d1f92
commit
7b0667d7cf
1 changed files with 45 additions and 0 deletions
|
@ -1,3 +1,5 @@
|
|||
# IDT, TSS, Interrupt Relay et GDT
|
||||
|
||||
Équivalent RISC-V de quelques concepts de x86 (IDT, TSS, Interrupt Relay et GDT).
|
||||
|
||||
### 1. **Interrupt Descriptor Table (IDT)**
|
||||
|
@ -23,3 +25,46 @@
|
|||
- **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.
|
||||
|
||||
# CPUID
|
||||
|
||||
En RISC-V, il n'y a pas d'instruction directe équivalente à l'instruction `CPUID` d'x86, qui permet de récupérer des informations détaillées sur le processeur (comme le modèle, la famille, les fonctionnalités supportées, etc.). Cependant, RISC-V fournit des mécanismes pour obtenir des informations sur le processeur via des **registres CSRs (Control and Status Registers)** et des **extensions spécifiques**.
|
||||
|
||||
### Mécanismes en RISC-V pour obtenir des informations sur le processeur :
|
||||
|
||||
1. **Registres CSRs** :
|
||||
- RISC-V définit plusieurs registres CSRs qui contiennent des informations sur le processeur, comme :
|
||||
- **mvendorid** : Identifie le fabricant du processeur.
|
||||
- **marchid** : Identifie l'architecture du processeur.
|
||||
- **mimpid** : Identifie l'implémentation spécifique du processeur.
|
||||
- **mhartid** : Identifie le cœur (hart) actuel dans un système multicœur.
|
||||
- Ces registres peuvent être lus à l'aide d'instructions CSR comme `csrr` (par exemple, `csrr a0, mvendorid`).
|
||||
|
||||
2. **Extensions et fonctionnalités** :
|
||||
- RISC-V est modulaire et supporte des extensions optionnelles (comme l'extension "M" pour la multiplication, "A" pour les opérations atomiques, "F" pour les flottants, etc.).
|
||||
- Pour déterminer quelles extensions sont supportées par un processeur, on peut consulter le registre **misa** (Machine ISA Register). Ce registre contient des bits qui indiquent les extensions activées.
|
||||
|
||||
3. **Appels système ou firmware** :
|
||||
- Dans certains systèmes RISC-V, des informations supplémentaires sur le processeur peuvent être obtenues via des appels système ou des interfaces firmware (comme SBI, Supervisor Binary Interface). Par exemple, le SBI peut fournir des informations sur les fonctionnalités disponibles ou la topologie du système.
|
||||
|
||||
4. **Device Tree (Arbre de périphériques)** :
|
||||
- Dans les systèmes embarqués ou Linux, les informations sur le processeur et ses fonctionnalités sont souvent décrites dans un **Device Tree** (un fichier de description matérielle). Ce fichier peut être analysé pour obtenir des détails sur le processeur.
|
||||
|
||||
### Exemple de lecture des registres CSRs en RISC-V :
|
||||
```assembly
|
||||
# Lire le mvendorid (Manufacturer ID)
|
||||
csrr a0, mvendorid
|
||||
|
||||
# Lire le marchid (Architecture ID)
|
||||
csrr a1, marchid
|
||||
|
||||
# Lire le misa (ISA et extensions supportées)
|
||||
csrr a2, misa
|
||||
```
|
||||
|
||||
### Résumé :
|
||||
- RISC-V n'a pas d'instruction unique comme `CPUID`, mais il utilise des registres CSRs pour fournir des informations sur le processeur.
|
||||
- Les registres comme `mvendorid`, `marchid`, `mimpid`, et `misa` sont les principaux moyens d'obtenir des informations sur le processeur.
|
||||
- Pour des informations plus détaillées, il peut être nécessaire de consulter la documentation du fabricant ou d'utiliser des mécanismes comme le Device Tree ou le SBI.
|
||||
|
||||
Si tu développes en C ou en assembleur, tu peux accéder à ces registres via des instructions CSR ou des bibliothèques spécifiques fournies par l'environnement de développement.
|
||||
|
|
Loading…
Add table
Reference in a new issue