Lorsque vous allumez votre ordinateur pour la première fois, le cycle d'extraction / exécution est-il d'abord configuré pour extraire les instructions de la puce du BIOS directement dans le registre d'instructions du processeur ou existe-t-il un circuit automatique configuré de sorte qu'à la mise sous tension, les instructions de la puce du BIOS est automatiquement chargée dans la RAM?
Mettre à jour
Je pense avoir trouvé ma réponse ici :
Une fois le signal de réinitialisation désactivé, la CPU commence à fonctionner. Le code en RAM ne peut pas être exécuté car la RAM est vide. Les fabricants de CPU préprogramment le processeur pour toujours commencer à exécuter le code à l'adresse "FFFF: 0000" (généralement le BIOS ROM) de la ROM.
Le CPU est donc physiquement configuré pour aller chercher et exécuter l'adresse mémoire FFFF: 0000 dans la ROM dès qu'elle est allumée.
Réponses:
La plupart des cartes avaient une option dans le BIOS pour configurer ce comportement. Il était généralement appelé observation, et il était généralement activé par défaut. Je ne pense pas que beaucoup de planches prennent la peine de vous donner l'option de nos jours et juste toujours de l'ombre. La raison en est que la RAM est plus rapide que la ROM, donc elle accélère les choses pour la copier sur la RAM et l'exécuter à partir de là.
Notez que la copie n'est pas effectuée par certains circuits magiques, elle est simplement effectuée par le BIOS lui-même lorsqu'il commence à s'exécuter hors de la ROM initialement, il se copie simplement sur la RAM et continue ensuite à s'exécuter à partir de là.
la source
Il s'agit d'un autre cas où la sagesse populaire reçue sur le sujet, comme malheureusement illustrée par
psusi
la réponse de et en fait une partie de la question, est bloquée dans le monde telle qu'elle était vers 1991, malgré la richesse des références techniques disponibles expliquant comment elle est maintenant autrement.Dans le monde de la fin des années 80, le firmware de la machine - l'une des deux choses appelées "le BIOS" dans le monde du PC compatible IBM - était en effet dans une puce ROM sur le bus ISA; et les CPU ont en effet commencé à exécuter du code à l'adresse physique
000FFFF0
, un emplacement dans la "mémoire conventionnelle" accessible via le pointeur en mode réel.F000:FFF0
Ce monde est révolu depuis longtemps.(Le monde dans lequel l'auteur de la page WWW que vous avez désignée, S. Ebrahim Shubbar, vit par erreur, malgré l'écriture en 2002, est encore plus ancien. Les processeurs n'ont pas commencé avec la
CS:IP
combinaisonFFFF:0000
depuis le 8086. Le 80286 l'a changé enF000:FFF0
Mais le monde 80286 lui - même est le monde hautement dépassé de la fin des années 1980 que la sagesse populaire continue de diffuser.)Votre "puce BIOS" est RAM; et votre CPU n'est pas 16 bits.
Sur les PC modernes, le micrologiciel de la machine est conservé dans une mémoire RAM non volatile . La puce NVRAM est connectée au bus LPC (ou à une interface dédiée «hub de micrologiciel»), et le pont LPC / FWH dans le «chipset» désactive normalement les cycles d'écriture. Le «clignotement» du micrologiciel implique la définition de registres de chipset qui permettent les écritures sur la NVRAM, puis l'écriture sur la NVRAM. (Dans l'Intel ICH10, par exemple, le bit de registre du chipset qui autorise les cycles d'écriture est nommé
BIOSWE
"BIOS Write Enable". Il y a quelques détails supplémentaires que je vais sauter ici, mais c'est l'essentiel.)Les processeurs x86 n'ont pas commencé à s'exécuter sur place
000FFFF0
depuis l'époque du 80286. Les processeurs 32 bits démarrent dans ce qui est communément appelé mode irréel . Même si la valeur initiale duCS
registre après réinitialisation estF000
, le descripteur de segment associé à ce registre tient initialementFFFF0000
comme son adresse de base. Ainsi , l'adresse physique qui correspond d' abord au CS du 16h16: l' adresse IPF000:FFF0
est en fait, et a été depuis les jours du 80386,FFFFFFF0
.Et c'est là que le micrologiciel de la machine est principalement mappé dans l'espace d'adressage physique sur les machines x86 32 bits et 64 bits. Il y a une fenêtre de 128 Ko sur le micrologiciel dans la zone "mémoire conventionnelle", mais la NVRAM contenant le micrologiciel de la machine peut atteindre 16 Mo (bien que cela varie selon le chipset) sur les PC modernes et est principalement mappée immédiatement dans les 16 Mo d'espace d'adressage physique immédiatement sous la ligne 4GiB - c'est-à-dire les adresses physiques
FF000000
àFFFFFFFF
. (Pour utiliser à nouveau l'ICH10 comme exemple: la quantité de cet espace d'adressage mappé à la NVRAM est contrôlée par un registre de chipset connu sous le nom de registreFWH_DEC_EN
"Firmware Hub Decode Enable". Le micrologiciel est codé pour reprogrammer leFWH_DEC_EN
enregistrez-vous en fonction de la taille de la puce NVRAM réelle installée sur la carte mère. Mais le haut 512KiB de la NVRAM est toujours mis en correspondance, à des adresses physiquesFFF80000
àFFFFFFF
, et ne peut pas être désactivé.) Le code initialement exécuté par le processeur immédiatement après la vie remise à zéro dans la partie supérieure de cette 64 Kio plage d'adresses 16MiB.En ce qui concerne l'observation de la ROM du BIOS (c'est ainsi qu'on l'appelle - tout à fait pourquoi
barlop
pense que le processeur est observé est un mystère): Oui, l'accès à la NVRAM sur le bus LPC ou le concentrateur de micrologiciel n'est toujours pas aussi rapide que l'accès au système principal (volatile) RAM. Mais les raisons pour lesquelles l'observation est importante ont considérablement diminué avec les progrès des systèmes d'exploitation tels que OS / 2 et Windows NT - à la fin des années 80 et au début des années 90. Les systèmes d'exploitation en mode réel tels que MS-DOS, PC-DOS, DR-DOS et ainsi de suite ont été superposés aux fonctionnalités d'E / S fournies par le micrologiciel de la machine. Ainsi, le code du micrologiciel et les données en lecture seule ont fini par être consultés beaucoup au moment de l'exécution. Les systèmes d'exploitation en mode protégé tels que OS / 2 et Windows NT reposent beaucoup moinssur les services fournis par le firmware au moment de l'exécution. Ainsi, le fait que le code s'exécutant hors de la NVRAM, et les données en lecture seule dans le même, arrivent au processeur plus lentement que lorsqu'ils sont masqués dans la RAM du système est moins problématique qu'auparavant.De plus, quel code firmware et les données qu'ils ne se fondent sur ne sont pas nécessairement en direct dans la partie de NVRAM mis en correspondance avec la partie de l' espace d'adressage physique, mentionnée ci - dessus 128KiB fenêtre « mémoire conventionnelle », qui est nécessairement même copiable en premier lieu. Les services de micrologiciel en mode protégé n'ont pas tous besoin de vivre sous la ligne 1 Mo dans l'espace d'adressage physique comme le font les services de micrologiciel en mode réel, et certains ne le font pas. (Et bien sûr , il serait possible de faire la même astuce avec la zone de l' espace d'adressage physique qu'ils font en direct s'il y a au moins 4GiB de RAM du système.)
Ironiquement, une source d'informations plus précise à ce sujet que S. Ebrahim Shubbar écrivant en 2002 est le livre de Phil Croucher The BIOS Companion datant d'un an auparavant en 2001. M. Croucher observe que Unices, Linux, Windows NT et "vraisemblablement (95 / 98) "" ne tirent aucun avantage de l'observation ". Ce n'est pas nécessairement entièrement sans avantage, mais c'est relativement peu par rapport au monde des personnes qui exécutent MS-DOS, PC-DOS et DR-DOS en mode réel sur des machines 80286 16 bits en 1989.
la source