Microprogrammation
?
Microcode c’est comme un mini ordinateur dans le processeur qui va lancer des tâches lourdes? dans le CPU
Architecture CISC vs RISC
- RISC ont beaucoup plus de registres pour une meilleur manipulation de données pour les développeurs de compilateur
Instruction
pop(abx) -> load temp abx | store abx temp | add sep, 4
Mise à jour de microcode
Contient du microcode et de firmware, exemple les disques durs.
Code machine
Dur à codé.
Le microcode va éxécuté le code machine.
Chaque élément lié au micro programme va être différencié par le prefix “micro”
instruction -> micro instruction
programmeur -> micro programmeur
- Microcode stocké dans la ROM ou SRAM (plus rarement, et seulement une partie)
Usage du microcode
- décoder des instructions
- réparer des bugs du CPU (patch pour l’hardware?)
- gestion des exceptions au niveau de l’architecture
- gestion de l’alimentation à l’intérieur du CPU?
Décodage d’instruction
Les premiers bytes représentent la longueur de l’instruction
Ensuite on prend un bloc d’instruction en chargant la valeur, on stoque la valeur dans un lieu défini et on fait l’instruction (incrémentation de valeur par exemple)
Bugs dans les CPUs
- Bug d’un intel Pentium A… en 1994 qui renvoyait des valeurs incorrects avec certaines divisions (floating point/virgule flottante).
Ils ne pouvaient pas mettre-à-jour le CPU, ils ont donc remplacé tous les CPUs, de là est née les microcode séparé des CPUs - Intel Kaby Lake (spectre et meltdown) -> perte de données (+ faille de donnée avec la pipeline de l’hyperthreading), avec le microcode, le bug a pû être réparé sans avoir a jeté les CPUs (ils ont désactivé la fonctionnalité)
Exemple de mise-à-jour
-> numéro de version
-> date de sortie
-> contenu de la mise à jour
-> signature du fabriquant
-> fichiers .dat
utilisé pour flashé la ROM