Comme je l'ai écrit dans ma réponse à cette question, la sagesse populaire reçue sur le sujet - comme malheureusement illustrée par d'autres réponses là-bas (et ailleurs dans SuperUser) - est bloquée dans le monde comme vers 1991, malgré la richesse des références techniques disponibles expliquant comment il en est maintenant autrement.
Vous n'auriez pas été aussi confus si vous aviez lu ma réponse, parce que vous ne vous interrogeriez pas sur "BIOS chargé à partir de la ROM" en premier lieu.
Votre "puce BIOS" n'est pas une ROM; il n'y a pas de code machine entre le démarrage du processeur et la première instruction du firmware; et le "M" dans "RAM" et "ROM" signifie "mémoire".
Comme je l'ai écrit auparavant, dans les PC modernes, le micrologiciel de la machine est conservé dans une RAM non volatile . Ce n'est plus la ROM comme avant. Voir la réponse précédente pour plus de détails sur la puce NVRAM connectée au bus LPC. (Par exemple: sur une machine assise démontée à côté de moi pendant que je tape ceci, la NVRAM contenant le firmware est une Pm49FL004T, une puce de RAM Flash LPC.)
Les processeurs 32 bits ne démarrent pas en mode réel et ne démarrent pas avec une adresse inférieure à la ligne 1 Mo. Ce sont des décades obsolètes de l'époque des processeurs x86 16 bits. Ils commencent dans ce qui est familièrement connu comme le mode irréel , et encore une fois dans ma réponse précédente, j'ai donné les détails de ce qui s'est réellement passé depuis l'avènement du 80386 . Ils chargent leur première instruction à partir d' une adresse qui est en fait juste au - dessus de l'espace d'adressage 32 bits, FFFFFFF0
.
Dans ma réponse précédente, je vous ai expliqué en détail où le micrologiciel de la machine est principalement mappé dans l'espace d'adressage physique sur les machines x86 32 bits et 64 bits. N'oubliez pas: la RAM et la ROM sont de la mémoire . Les adresses physiques sont des adresses mémoire , sur le bus système. Ils peuvent adresser soit la RAM soit la ROM. (Ils peuvent même aborder d'autres choses également, mais cela ne fait que compliquer cette discussion.) L'adresse physique FFFFFFF0
est de 16 octets sous le haut de la plage de 512 Ko où les 512 Ko du micrologiciel, en RAM non volatile, sont toujours mappés sur le bus système par le "chipset".
Il n'y a pas de «chargement» à partir d'une puce ROM mythique qui se poursuit lors de l'initialisation ou de la réinitialisation du processeur. La puce contenant le firmware est une RAM non volatile . Il conserve son contenu, écrit lorsqu'il est "flashé", à travers les cycles d'alimentation. Et le processeur lit simplement les instructions et les données du micrologiciel, sur le bus système et sur un bus LPC (et éventuellement un pont LPC / FWH) connecté au bus système via le chipset, en utilisant une adresse de mémoire physique.
Lectures complémentaires