60 votes

Qu'est-ce que le microcode exactement et en quoi diffère-t-il du firmware ?

En ce qui concerne la terminologie, qu'est-ce exactement que le "microcode" et s'il peut être mis à jour, en quoi diffère-t-il du firmware ?

Cette question n'est pas un doublon de cette question (autant que je puisse en juger) que j'ai également posée concernant la modification du microcode. Ici, je veux strictement savoir comment utiliser ces termes correctement.

Mise à jour

J'ai une réponse sélectionnée, mais je ne suis pas particulièrement satisfait. J'ai examiné beaucoup de réponses et je trouve beaucoup de ces réponses également insatisfaisantes. Permettez-moi donc de vous présenter mes deux cadres :

  1. "Le microcode du processeur est semblable au firmware du processeur." Plus je lis cela, plus je le comprends ainsi. Dans ce contexte, "microcode" est simplement un argument marketing pour "firmware du processeur". Merci de me suivre,...
  2. Ou, je me trompe, et je sais que cela arrive ! Dans ce cas, j'ai besoin d'une idée beaucoup plus approfondie de pourquoi j'ai tort. Dans les réponses que j'ai lues qui pointent vers mon erreur, j'ai du mal à les comprendre,
    • "Exécution vs données" beaucoup de réponses utilisent ce paradigme, mais pour le CPU, cela n'a pas beaucoup de sens pour moi. Certains affirment que le firmware est exécuté, mais par quoi ? Quand il s'agit du CPU, les programmes sont-ils des instructions ou des données ?
    • Si le firmware fait le pont entre le logiciel et le matériel (comprendre : la partie génie électrique des dieux), alors comment le microcode ne satisfait-il pas également cette distinction.
    • "Interprétation" au fil du temps, cela devient encore moins clair. Que signifie dire que les "instructions matérielles sont interprétées" avec le microcode. Si c'était vrai, quelque chose serait-il aussi performant s'il n'était pas interprété mais précompilé vers différentes instructions matérielles et simplement "exécuté" ? De plus, comment le General MIDI n'est-il pas interprété de la même manière ? C'est un langage interprété par le "microcode MIDI" et s'exécute sur le matériel. Ou, les terminaux idiots qui interprètent les instructions de téléscripteur pour l'affichage visuel ?
    • Le terme "microcode" s'applique-t-il au code qui s'exécute sur les cartes son, et cartes vidéo (GPU) ?

63voto

Jake Stewart Points 2927

L'origine du mot firmware est un point intermédiaire entre le matériel et le logiciel - un logiciel intégré au matériel. Il fait référence à un logiciel stocké dans une mémoire non volatile (comme la ROM, l'EEPROM ou la mémoire Flash) sur un appareil matériel, et utilisé par l'appareil lui-même.

De nos jours, il est de plus en plus courant dans certains types de matériels que leur "firmware" soit stocké dans un logiciel de pilote et chargé sur l'appareil lors de son démarrage/initilisation, au lieu de le laisser de manière permanente sur l'appareil. Ce n'est pas un gros problème de nos jours, par exemple, de stocker quelques centaines de Ko de code firmware dans un pilote logiciel chargé sur le système d'exploitation hôte, et de l'envoyer à l'appareil lorsqu'il est initialisé par le pilote.

Cela est toujours communément appelé "firmware" même s'il n'est pas résident sur le matériel (si vous débranchez le matériel et le mettez dans un autre système, il ne conservera pas cette version de "firmware").

Le microcode est un sous-ensemble de cela. Le microcode n'est pas un terme générique pour tout le firmware chargé sur un appareil au démarrage. Au contraire, il est spécifique aux processeurs, où le microcode forme la couche de traduction entre les instructions standard de plus haut niveau du processeur et les opérations de plus bas niveau spécifiques à ce processeur. Il peut être chargé sur le processeur au démarrage, par le BIOS, et remplacé plus tard dans la phase de démarrage par le système d'exploitation également.

Une mise à jour du microcode peut permettre de modifier le comportement de bas niveau d'un processeur pour contourner certains bugs encore à découvrir, sans avoir besoin de remplacer le matériel du processeur. Le microcode contient généralement la correspondance la plus efficace possible entre les instructions de plus haut et de plus bas niveau pour la meilleure vitesse et efficacité énergétique, donc parfois, lorsqu'un changement de microcode est nécessaire pour corriger un bug, cela peut entraîner une performance réduite.

Notez que contrairement à Spectre, Meltdown (la vulnérabilité affectant uniquement les puces Intel) ne peut pas être corrigé avec des mises à jour de microcode seules et nécessite des modifications de la fonctionnalité principale du système d'exploitation, ce qui pourrait encore réduire les performances.


Pour répondre à certaines de vos questions spécifiques depuis votre édition :

  1. Oui, le microcode est essentiellement du firmware qui s'exécute sur le processeur. Le terme spécial "microcode" fait référence spécifiquement au firmware sur un processeur qui contient le plan pour traduire du langage machine standard en instructions de processeur de bas niveau. C'est donc un terme plus spécifique que firmware.

    Notez que, comme je l'explique ci-dessus, il n'est pas stocké sur le processeur lorsque celui-ci est éteint, mais chargé à chaque démarrage.

  2. Je ne pense pas que vous ayez tort. Le firmware n'a pas besoin d'être écrit dans un certain langage machine et son exécution ne doit pas être déclenchée d'une certaine manière. À un certain niveau, tout le code machine est une "donnée" qui est "lue" par un processeur et interprétée d'une certaine manière.

    Le terme "microcode" est généralement utilisé uniquement pour les processeurs principaux et pas pour les cartes graphiques ou autres matériels, même si ces autres appareils peuvent avoir du code chargé sur eux de la même manière.

27voto

julian Points 378

https://wiki.debian.org/Microcode

Microcode du processeur

Le microcode du processeur est similaire au micrologiciel du processeur. Le noyau est capable de mettre à jour le micrologiciel du processeur sans avoir besoin de le faire via une mise à jour du BIOS. Une mise à jour du micrologiciel est conservée en mémoire volatile, donc le BIOS/UEFI ou le noyau met à jour le microcode à chaque démarrage.

Les processeurs d'Intel et d'AMD peuvent nécessiter des mises à jour de leur microcode pour fonctionner correctement. Ces mises à jour corrigent des bugs/erreurs qui peuvent causer depuis un traitement incorrect, une corruption du code et des données, jusqu'à des blocages du système.

Le BIOS (ou l'UEFI) met à jour le microcode du CPU au démarrage, cependant la plupart du temps, soit le vendeur de la carte mère n'émettra pas de mises à jour fréquentes du BIOS/UEFI, soit l'utilisateur n'installera pas de telles mises à jour. Pour ces raisons, le processeur du système est susceptible de fonctionner avec un microcode obsolète sur un grand nombre de systèmes.

Exemples:

https://www.win-raid.com/t3355f47-Intel-AMD-amp-VIA-CPU-Microcode-Repositories.html

6voto

Eh bien, les "mises à jour du microcode" d'Intel sont en fait des mises à jour "firmware" dans le sens où elles mettent à jour bien plus que l'unité de traduction du microcode du processeur.

Ces mises à jour du package de processeur unifié que nous appelons "mises à jour du microcode" pour Intel mettent également à jour d'autres microcontrôleurs intégrés (comme le PMU et le cœur de gestion de l'alimentation) ainsi que plusieurs tables de paramètres pour différents sous-systèmes du processeur intégré. Elles sont plutôt complexes.

Ces informations sont disponibles dans plusieurs des brevets d'Intel liés au microcode et aux mises à jour du microcode.

5voto

Karel Bílek Points 5237

Je pense que le terme "microcode" fait principalement référence à ce que fait le code (il exécute des instructions de bas niveau en utilisant des instructions encore plus bas niveau), tandis que le terme "micrologiciel" fait principalement référence à la façon dont il est stocké et géré (moins facilement mis à jour que le logiciel, plus facilement mis à jour que le matériel). Dans ce sens, c'est un peu comme la distinction entre une "application" et un "fichier JAR" - le même programme pourrait être les deux, mais vous le regardez de deux perspectives différentes.

Par ailleurs, l'idée de microcode remonte à Maurice Wilkes en 1951, des décennies avant que les processeurs d'ordinateur ne soient intégrés dans du silicium.

4voto

Willson Points 57

Le micrologiciel fait généralement référence au code des appareils qui contiennent un processeur, pas au processeur lui-même, par exemple le micrologiciel pour un téléphone Android.

Le microcode est une couche de traduction entre des jeux d'instructions complexes (par exemple, 486, 686, AMD-64, etc.) et les instructions de niveau inférieur que les fabricants de puces conçoivent en silicium. Ainsi, un certain nombre d'instructions dans l'ensemble d'instructions du CPU ne sont pas mises en œuvre en silicium, mais traduites via du microcode en plusieurs instructions qui sont mises en œuvre en silicium.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X