Comment le microcode est-il chargé sur le processeur?

J'ai lu que le microcode est chargé dans le processeur à chaque redémarrage. Il réside sur la mémoire flash et lorsque la machine est démarrée, elle est copiée sur la CPU. Ou, dans le cas de Linux, le système d'exploitation lui-même possède la copie de microcode pour le processeur. Mais comment le microcode est-il copié sur le processeur? Toutes les données se déplacent dans un ordinateur par le consentement de la CPU. Le CPU reçoit des instructions en langage machine. Étant donné que le microcode est impératif pour l'exécution de ces instructions sur le langage de la machine, donc, sans que le microcode soit présent dans le processeur, comment les instructions d'accès à la mémoire flash et les opérations consécutives sont-elles effectuées par CPU? Cela signifie-t-il que les instructions câblées non microcodées permettent de copier le microcode en mode réel?

J'ai lu que le microcode est chargé dans le processeur à chaque redémarrage.

Le BIOS peut émettre une mise à jour de microcode pendant le démarrage. Ainsi, le système d'exploitation peut-être. Souvent, ces mises à jour sont nécessaires, en particulier avec les processeurs Intel ultérieurs.

Il réside sur la mémoire flash et lorsque la machine est démarrée, elle est copiée sur la CPU. Ou, dans le cas de Linux, le système d'exploitation lui-même possède la copie de microcode pour le processeur. Mais comment le microcode est-il copié sur le processeur?

L'Intel et les CPU modernes ont un mécanisme appelé "Registres spécifiques au modèle", et des instructions spéciales de la CPU à lire (RDMSR) et écrivent à eux (WRMSR). Bien que ces registres affectent les paramètres de la CPU, l'écriture à une adresse spécifique avec l'adresse du nouveau microcode indique à la CPU de lire une région de mémoire et de postuler sur le microcode existant.

Toutes les données se déplacent dans un ordinateur par le consentement de la CPU. Le CPU reçoit des instructions en langage machine. Étant donné que le microcode est impératif pour l'exécution de ces instructions sur le langage de la machine, donc, sans que le microcode soit présent dans le processeur, comment les instructions d'accès à la mémoire flash et les opérations consécutives sont-elles effectuées par CPU?

Il y a toujours un microcode. Le mécanisme ci-dessus met à jour le microcode. Intel / AMD ne publie pas vraiment de détails sur la façon dont il fonctionne, ils ne fournissent qu'un mécanisme de mise à jour. De toute évidence, il est en train de copier un microcode ROM sur une sorte de mémoire interne de processeur. Mais il y a un microcode là où commence la CPU. Certaines UC récentes et éventuellement AMD ne fonctionneront pas de manière fiable après le démarrage sans une mise à jour de microcode effectuée par le BIOS, mais évidemment ils fonctionneront assez bien pour effectuer une mise à jour initiale du microcode.

Cela signifie-t-il que les instructions câblées non microcodées permettent de copier le microcode en mode réel?

La configuration initiale du microcode est effectuée en interne par la CPU et aucune instruction n'est exécutée pour y parvenir. Il est configuré avant que la première instruction CPU ne soit exécutée.

Pour mettre à jour le BIOS, les instructions RDMSR et WRMSR appropriées doivent être exécutées.

Référence : "Cette instruction doit être exécutée au niveau de privilège 0 ou en mode d'adresse réelle; sinon, une exception de protection générale #GP (0) sera générée". Si elle n'est pas exécutée en mode réel, elle doit se faire en mode ring 0 ou kernel. Vous pouvez mettre à jour le microcode à tout moment.

Les processeurs modernes sont équipés d'un microcode complet déjà installé. Ce microcode réside dans une zone ROM spéciale sur la CPU elle-même et ne peut pas être changé / effacé. Ainsi, la CPU peut fonctionner hors-de-la-boîte.

Le système BIOS et / ou le système d'exploitation peuvent alors lancer le chargement d'une mise à jour de microcode dans la CPU. Une telle mise à jour n'est pas un microcode complet, mais plutôt un petit patch pour résoudre les problèmes. La CPU contient une petite zone de RAM volatile à cette fin.

Une référence utile: https://www.dcddcc.com/pubs/paper_microcode.pdf

La question est mal formulée. Il existe de nombreux "microcodes" dans la CPU moderne x86 / IA64, et il existe une différence entre "patch microcode" et microcode.

Le microcode dans sa compréhension classique (en tant qu'éléments étape par étape d'exécution de longues instructions du processeur) est presque certainement enchevêtré en silicium, car il n'y a aucune raison de garder les bogues non assemblés au cours de plusieurs générations de CPU, lorsque de nouveaux silicones / RTL Est compilé avec chaque nouveau noeud de fabrication.

Cependant, toutes les CPU récentes ont plusieurs unités internes qui sont contrôlées par des microprocesseurs indépendants intégrés dans la puce CPU x86.

Le plus remarquable est le «P-unit», un processeur qui contrôle la gestion dynamique de l'alimentation de la CPU. Au fur et à mesure que les fréquences de base augmentaient et que des fuites augmentaient avec la miniaturisation des transistors de processeur, la seule façon de conserver l'énergie dans une limite raisonnable est l'agitation agressive de l'horloge et le dynamisme dynamique. Le problème est que la CPU peut exécuter des variantes infinies de codes logiciels, et chacune atteint un certain pic de consommation d'énergie. Certains modèles de «virus de puissance» peuvent ne pas être connus au moment où la CPU a été finalisée pour le commerce de détail, et certains paramètres de gestion des algorithmes doivent être corrigés. Cela se fait via des "correctifs de microcode" dédiés.

Il existe plusieurs microprocesseurs de ce genre qui contrôlent d'autres blocs de CPU comme les graphiques et la mémoire.

Les détails du processus de correctif sont les plus secrets, afin de prévenir les interférences malveillantes. Voici un rapport de hacker sur la tentative d'ingénierie inverse du mécanisme.

En bref, le microcode d'architecture x86 n'est pas chargé dans des CPU modernes, mais les microcodes pour différents microprocesseurs auxiliaires peuvent comporter des correctifs.