¿Se lee el BIOS del chip del BIOS o se copia en la RAM al inicio?

10

Cuando enciende su computadora por primera vez, ¿se configura primero el ciclo de recuperación / ejecución para recuperar las instrucciones del chip BIOS directamente al registro de instrucciones en la CPU o hay una configuración automática de circuitos para que cuando se detecte el encendido, las instrucciones en ¿El chip BIOS se carga automáticamente en la RAM?

Actualizar

Creo que encontré mi respuesta aquí :

Después de que se apaga la señal de reinicio, la CPU comienza a funcionar. El código en la RAM no se puede ejecutar ya que la RAM está vacía. Los fabricantes de CPU preprograman el procesador para que siempre comience a ejecutar el código en la dirección "FFFF: 0000" (generalmente el BIOS ROM) de la ROM.

Entonces, la CPU está configurada físicamente para ir a buscar y ejecutar la dirección de memoria FFFF: 0000 en ROM tan pronto como esté encendida.

mring
fuente
1
Si encuentra una respuesta por ti mismo, no publicarlo como una respuesta a continuación, en lugar de editar en la pregunta. (Puede aceptar sus propias respuestas después de un tiempo)
User1686
El libro Actualización y reparación de PC menciona una ubicación de memoria de la primera que lee la CPU ... Y hay un proceso que los antiguos maestros de CS enseñan que aún puede aplicarse, llamado bootstrapping, como al levantarse con sus bootstraps, que es cómo (el base de) se carga un sistema operativo.
barlop

Respuestas:

3

La mayoría de las placas solían tener una opción en el BIOS para configurar este comportamiento. Por lo general, se llama sombreado y, por lo general, estaba habilitado de forma predeterminada. No creo que muchas tablas se molesten en darle la opción en estos días y siempre siempre son sombras. La razón es porque la RAM es más rápida que la ROM, por lo que acelera las cosas para copiarla en la RAM y ejecutarla desde allí.

Tenga en cuenta que la copia no se realiza con algún circuito mágico, solo se hace por el BIOS en sí cuando comienza a ejecutarse inicialmente desde la ROM, simplemente se copia en la RAM y luego continúa ejecutándose desde allí.

psusi
fuente
Entonces, por lo que entiendo de lo que dijo, al cobrar vida, la CPU lee las instrucciones de la ROM, que dicen "Copie todas las instrucciones de inicio aquí en la ROM a la RAM y luego configure el contador del programa en tal o cual dirección inicial en RAM ". ¿Eso es correcto?
mring
@psusi ¿Tiene algunos enlaces que explican de qué está hablando? El sombreado de la CPU no me está causando mucho, y cómo podría configurarse. ¿Y de qué estás hablando? ¿Cuándo las placas base tenían esta opción? ¿Puedes señalar algún modelo de placa base que hubiera tenido esta opción?
barlop
18

Este es otro caso en el que la sabiduría popular recibida sobre el tema, como lamentablemente ejemplificada por psusila respuesta y, de hecho, parte de la pregunta, está atrapada en el mundo como estaba alrededor de 1991, a pesar de la gran cantidad de referencias técnicas disponibles que explican cómo está ahora. de otra manera.

En el mundo de fines de la década de 1980, el firmware de la máquina, una de las dos cosas llamadas "BIOS" en el mundo de la PC compatible con IBM, estaba en un chip ROM en el bus ISA; y las CPU realmente comenzaron a ejecutar código en la dirección física 000FFFF0, una ubicación en la "memoria convencional" a la que se accede mediante el puntero de modo real. F000:FFF0Este mundo se ha ido hace mucho tiempo.

(El mundo en el que el autor de la página WWW al que señaló, S. Ebrahim Shubbar, vive erróneamente, a pesar de haber escrito en 2002, es aún más antiguo. Las CPU no han comenzado con la CS:IPcombinación FFFF:0000desde el 8086. El 80286 cambió esto a F000:FFF0Pero el mundo 80286 en sí mismo es el mundo altamente desactualizado de fines de la década de 1980 que aún circula la sabiduría popular).

Su "chip BIOS" es RAM; y tu CPU no es de 16 bits.

En las PC modernas, el firmware de la máquina se guarda en una RAM no volátil . El chip NVRAM está conectado al bus LPC (o a una interfaz dedicada "firmwware hub"), y el puente LPC / FWH en el "chipset" normalmente desactiva los ciclos de escritura en él. "Parpadear" el firmware implica establecer registros del conjunto de chips que permitan escribir en la NVRAM y luego escribir en la NVRAM. (En Intel ICH10, por ejemplo, el bit de registro del conjunto de chips que permite los ciclos de escritura se denomina BIOSWE"BIOS Write Enable". Hay algunos detalles adicionales que omitiré aquí, pero eso es lo esencial).

Los procesadores x86 no han comenzado la ejecución en la ubicación 000FFFF0desde los días del 80286. Las CPU de 32 bits se inician en lo que se conoce coloquialmente como modo irreal . Aunque el valor inicial del CSregistro después del reinicio es F000, el descriptor de segmento asociado con ese registro inicialmente se mantiene FFFF0000como su dirección base. Por lo que la dirección física que corresponde inicialmente al CS el 16:16: dirección IP F000:FFF0es, de hecho, y ha sido desde los días de la 80386, FFFFFFF0.

Y ahí es donde el firmware de la máquina se asigna principalmente al espacio de direcciones físicas en máquinas x86 de 32 bits y 64 bits. Hay una ventana de 128KiB en el firmware en el área de "memoria convencional", pero la NVRAM que contiene el firmware de la máquina puede tener hasta 16MiB (aunque esto varía según el chipset) en las PC modernas y se asigna principalmente a los 16MiB de espacio de direcciones físicas inmediatamente debajo de la línea 4GiB, es decir, direcciones físicas FF000000a FFFFFFFF. (Para usar de nuevo el ICH10 como ejemplo: la cantidad de este espacio de direcciones asignada a la NVRAM se controla mediante un registro del conjunto de chips conocido como FWH_DEC_EN"Activación de decodificación de concentrador de firmware". El firmware está codificado para reprogramar elFWH_DEC_ENregístrese de acuerdo con el tamaño del chip NVRAM real que está instalado en la placa base. Pero el 512KiB parte superior de la NVRAM está siempre asignada, a las direcciones físicas FFF80000a FFFFFFF, y no puede ser desactivada.) El código inicialmente ejecutado por el procesador inmediatamente después de la vida de reinicio en la parte superior de 64KiB de este rango de direcciones 16MiB.

En cuanto al sombreado de la ROM del BIOS (que es como se llama, por qué barlopcree que la CPU está siendo sombreada es un misterio): Sí, el acceso a NVRAM en el bus LPC o el concentrador de firmware todavía no es tan rápido como el acceso al sistema principal (volátil) RAM. Pero las razones por las cuales el sombreado es importante disminuyeron enormemente con los advenimientos de los sistemas operativos como OS / 2 y Windows NT, nuevamente a fines de los años ochenta y principios de los noventa. Los sistemas operativos en modo real, como MS-DOS, PC-DOS, DR-DOS, etc., se superpusieron a la funcionalidad de E / S proporcionada por el firmware de la máquina. Entonces, el código del firmware y los datos de solo lectura terminaron siendo accedidos mucho en tiempo de ejecución. Los sistemas operativos en modo protegido como OS / 2 y Windows NT dependen mucho menossobre servicios proporcionados por firmware en tiempo de ejecución. Por lo tanto, el hecho de que el código que se ejecuta desde la NVRAM y los datos de solo lectura en el mismo lleguen al procesador más lentamente que cuando se oculta en la RAM del sistema es un problema menor de lo que solía ser.

Por otra parte, ¿qué firmware de código y datos que hacerlo dependen no necesariamente viven en la parte de la NVRAM asignan a la porción del espacio de direcciones físicas, la citada ventana 128KiB "memoria convencional", que es necesariamente incluso shadowable en el primer lugar. No es necesario que todos los servicios de firmware en modo protegido vivan por debajo de la línea de 1MiB en el espacio de direcciones físicas como lo hacen los servicios de firmware en modo real, y algunos no. (Y, por supuesto, sólo sería posible hacer el mismo truco con el área de espacio de direcciones físicas que lo hacen en directo si hay al menos 4GiB de RAM del sistema.)

Irónicamente, una fuente más precisa de información sobre esto que S. Ebrahim Shubbar escribió en 2002 es el libro de Phil Croucher The BIOS Companion del año anterior en 2001. M. Croucher observa que Unices, Linux, Windows NT y "presumiblemente (95 / 98) "" no se obtiene ningún beneficio del sombreado ". No es necesariamente un beneficio total, pero es relativamente poco con respecto al mundo de las personas que ejecutan MS-DOS, PC-DOS y DR-DOS en modo real en máquinas 80286 de 16 bits en 1989.

JdeBP
fuente